@L}5 _$% l0$)$$Hȱ$ UhL" `e$$%`$%`  R@P!( L(1   Y I`  d  Ld M * @  $ % CC$$)%1 Udߥ$9%: !0 S$% DD˙`  }J)Lr d M * @  $ % CC$$)%1 Udߥ$9%: !0 S$%} DD˙`  }J)Lr J  ((  p L ()   J}L= ( L 0q A    IB JC;? D W } LL  ` W )LA!  ߰")-݆ p" } $G@LL 08`Q")<2Q0 -G$Ș݆ UL# ; p8(()(0ʥ)NQ` }$GȘ݆LU )L ݆ L GȘ ݆LL )W>Z   HH)H }p h  hyhy D L> L JJ    ! LA*` BF }7'8  M HN H` 8 Z  \LdJJ!"! GFE@F (!L }EE !E^ ^ E E7EȩEdE/EȩE  D } .L }  ;F d  ;?F7F? ( .   Z D LL d } . D  L    p  E` , d)  D L) 0BM݊L݉} ML  N݆ L NLML [ TEqEHȱEqEh 0Gȹ G} HLL GɛL  LFREE SECTORS G) *Gȩ GȽG GȌ*jj >G} C8jJ3j2CD( C202C ԠBX` N 1? l LlD:RAMDISK}.COMLu L1 L ;LHL  T`  `1  ɐ     `TU  } L ? .  t`GBJ ~DEHI B V0dV!}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEh"}DEL8HI4 0 HI,0 0  9 .G VLO#},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHI$} V0 0`B;DEL`?<0LV`@ʆ v s? F0Ξ05: [ BDEHI%} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO &}STILL RUN DOS B;DE J  (` 9 V⪍ ઍ  -'}LLu ÝDEHILV 9 .l 9 .l  `` s$B BH(}I|DE V BLV nB,DE JLV B V BLVDEIʩ BꭝLu  } 3E:}DISK OPERATING SYSTEM II VERSION COPYRIGHT 1984 ATARI CORP.A. DISK DIRECTORY I. FORMAT DISKB. RUN CARTRIDG*}E J. DUPLICATE DISKC. COPY FILE K. BINARY SAVED. DELETE FILE(S) L. BINARY LOADE. RENAME FILE M. RUN AT ADDRES+}SF. LOCK FILE N. CREATE MEM.SAVG. UNLOCK FILE O. DUPLICATE FILEH. WRITE DOS FILES P. FORMAT SINGLEL !N',}#"&))9(&*)/h)''-&؆莟R'S  vL/ˢ L }Insert DOS 2.0s, type Y Λx -}DEfHI 1莏#q! @ y0ɛ8A0,' ȅ 1 1ild! 1L!NO SUCH ITEMSELECT.} ITEM OR FOR MENU! 0 .z:*{}.|{ 1 0 0JB 18L%|DL/}%DIRECTORY--SEARCH SPEC,LIST FILE?[# 0 0 &|D3" 1L!NOT A DISK FILEN !B 1L!E# 1 !BD0}ED:}:1BJ|DE 1DEBHI 1 h0ߢ 0.1}  0?詛 1 y0YЛ 1 ;#L" ;#L! BL1TYPE "Y" TO DELETE...DELETE FILE SPEC2}COPY--FROM, TO?OPTION NOT ALLOWED736 FREE SECTORS COPYING---D1:DIRECK.COMl# 0|D .L/%#3}##JB|DE 1BHID#E 1#0: B 1L!#͑### B 1#c$0SY4}S1}:## # # .#Ƚ# # 𩛙## 1,#PD#ELJ- <.BJD#E 5}1 1HH 0hh|DL%1}:̳# L% #D#EL% 1 0 . .0O% 1L!WILD CARDS NOT A6}LLOWED IN DESTINATION 0 <.|K}N 2 FORMAT. t* 5) 1L!`) 0NΞ 0 L1) 1 L!BAD LOAD FILELOAD FROM WHAT FILE?) 0 ?}0#B 1L!WHAT FILE TO LOCK?) 0 0$B 1L!WHAT FILE TO UNLOCK?DUP DISK-SOURCE,DEST DRIVES?TYPE "Y" IF OK TO US@}E PROGRAM AREACAUTION: A "Y" INVALIDATES MEM.SAV.FE! +L1   `*  70 2 2A} 0.* 1 y0 0)INSERT BOTH DISKS, TYPE RETURN^, 1 y038逍 N, 1L! ,B}C, t*  Lx+, 0 ^, 1 y0 , ,0,0 ,L+ ,I0 ,Vǭ0C}Ξ, 0 }, 1 y0C,ШC, 0K'!" H H 'h h Lx+!EF 5L1L!D,I,HhD}` NOT ENOUGH ROOMINSERT SOURCE DISK,TYPE RETURNINSERT DESTINATION DISK,TYPE RETURNE}`  `8 rL1`-* 1P* 1 y0Y`hhL!NAME OF FILE TO MOVE?- 0 0|DL% <.F},^ 1 70 0 .@L# .BJ 1  DEHIB V L1 ,} 1 70,L.  G}JB|,#P#DE 1 HI BDEHHII 1 B 1 ,^ 1 70,0La- B V,#PH},^ 1 70 0L#L!-* 1P* 1 y0Yj383}mm ݭI}}`8}``|* ? ɛ,`|:-)| / 1L!`DESTINATION CANT BE DOJ}S.SYS0 0H{ 24Δ 28/L!/) 2 Π 2 0 ξK}hAΞB,0 J 1 BDEHI,HÝDE 1HIHIDELSAVE-GIVE L}FILE,START,END(,INIT,RUN)O S0 1`BDEPHI V` S0H 1 L!M}0 0 1L~0`PLEASE TYPE 1 LETTER,0`hhL! 70 1L0L<1 ,;ɛ7,"ɛ:ݦ1ݥN}A"D|ݤD|ȩ:|ȩ|ɛ,,(/+.ީ1 1,ɛ`轤{NAMEO} TOO LONG B VL!` L1I H1EΝDL1|mDiE` V0`8d/8 i:222 1 LP}!ERROR- 138ɛ+,' 20*.. өr2 1``2TOO MANY DIGITSINVALID HEXAQ}DECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uR} ECIMAL PARAMETER800 0 8 00`,0'D800 H,ɛh`2L1NEED D1 THRU D8uDEFINE L1="40880",L2="40920"BYTE DUNIT=769,Cmd,DCOM=770,gyy,gxx,op,Siostatus=771,IODIR=771,keyp=764,icn,rnd=53770,dma=559,T}dma2=54272,i,rx,sf,md,mx,my,xx,yy,ry,dvn,sk,Stick0=632,;md:0=brit,1=twn,2=dng,3=screen,4=dngscreenattr=77,consol=53279,bg=U}710,fg=709,DDev=768,smd,sic,pmb=54279,gractl=53277,p0x=53248,p1x=53249,pc0=704,pc1=705,ps0=53256,ps1=53257,gprior=623,s_diV}r,ox,oy,oyv,vdel=53276,per,Ptyp,Ttyp,Strig0=644,TextMode,crmd,ocrmdCARD DSECTOR=778,Sec,oq,BUFADR=772,TIMEOUT=774,SECSIZEW}=776,scadr=88,gsc,dl=560BYTE ARRAY Pe(256),sc_,Sc(1024),cnt(7),pa(8192),pp,tmp=960,UnPe(32),px=53248,cmax=[1 14 16 12 7 7X} 175],FiEx="",gg=[''|' '''''''''''''''''''''''''''''''''' '|'W'o'r'l'dY}' 'm'a'p''|'W'o'r'l'd' 's'c'r'e'e'n' '#'''''T'o'w'n'e' ' ' ' ' ' ' ' '#'''''T'o'w'n'e' 's'c'r'e'e'n' '#'''Z}''D'u'n'g'e'o'n' ' ' ' ' ' '#'''''D'u'n'g'e'o'n' 's'c'r'n' '#''|''|'D'u'n'g'e'o'n' 'r'o'o'm' '#'''''''''[}''''''''''''|'''s'e'l'e'c't' '#' '|' '''' ''|''s'a'v'e''l'o'a'd' '|'''''''|''''s'e'l' 'i't'e'\}m''''''ݛ''|''i'l'l''t'o'g'l'F'S'|'0'0'0''''|'''''m'o'v'e' 'i'c''''''|''h'o'w' 'c'h'a'r's':'O'f'f'|']}'''''''''''''''''';azfor chars Shown''W'o'r'l'd' ' ''T'o'w'n'e' ' ''D'u'n'g'e'o'n''S'c'r'e'e'n' ^}''R'o'o'm' ' ' ''S'e'c't'o'r's' ''F'i'l'e' '''' 'G'r'a's's'l'a'n'd''B'r'i'c'k''H'e'x' 'L'a'n'd'-'S'h'i'p''W'o'_}o'd's' 'L'i'g'h't' 'W'o'o'd's''H'i'l'l' 'S'h'i'p'-'L'a'n'd' 'L'a'n'd'-'W'a't'e'r' 'S'h'i'p'-'W'a't'e'r''B'r'i'd'g'e'`}'S'w'a'm'p' 'I'n'n' 'A'm'b'u's'h' 'S'h'i'p'-'S'h'i'p''S'h'r'i'n'e''H'o'l'e' 'u'p' '&' 'C'a'm'p''B'r'i't'a'n'n'i'a'a} 'L'e'v'e'l' '1''L'y'c'a'e'u'm' 'E'm'p'a't'h' 'A'b'b'e'y''S'e'r'p'e'n't'''s' 'H'o'l'd''M'o'o'n'g'l'o'w''B'r'i't'a'i'b}n''J'h'e'l'o'm''Y'e'w''M'i'n'o'c''T'r'i'n's'i'c' 'S'k'e'r'a' 'B'r'a'e''M'a'g'i'n'c'i'a''P'a'w's''B'u'c'c'a'n'ec}'e'r's' 'D'e'n''V'e's'p'e'r''C'o'v'e''B'r'i't'a'n'n'i'a' 'L'e'v'e'l' '2''D'e'c'e'i't''D'e's'p'i's'e''D'e's't'a'rd}'d''W'r'o'n'g''C'o'v'e't'o'u's''S'h'a'm'e''H'y't'h'l'o't'h''T'h'e' 'G'r'e'a't' 'A'b'y's's''C'o'r'r'i'd'o'r' 'U'e}p' 'L'a'd'd'e'r' 'D'o'w'n' 'L'a'd'd'e'r''U'p' '&' 'D'o'w'n' 'L'a'd'd'e'r''C'h'e's't''D'o'o'r' 'S'e'c'r'e't' 'D'o'o'rf}''W'a'l'l''B'a'l'l''A'l't'a'r' 'P'o'i's'o'n' 'F'i'e'l'd''L'i'g'h't'n'i'n'g' 'F'i'e'l'd' 'F'i'r'e' 'F'i'e'l'd' 'S'lg}'e'e'p' 'F'i'e'l'd''W'i'n'd's' 'F'a'l'l'i'n'g' 'R'o'c'k's''P'i't' 'T'r'a'p''N'o' 'E'f'f'e'c't' 'F'o'u'n't'a'i'n''H'eh}'a'l'i'n'g' 'F'o'u'n't'a'i'n' 'B'a'd' 'F'o'u'n't'a'i'n' 'C'u'r'e' 'F'o'u'n't'a'i'n''P'o'i's'o'n'e'd' 'F'o'u'n't'a'i'n''i}R'o'o'm],SDir=[46 37 51 55],ToV=[0 16 32 48 64 192 224 240 112 176 160161 162 163 128 129 142 144 145 146147 148 108],Scsj}="Dn:xSCREEN.000",Brit="Dn:WORLD.MAP",up_=[24 60 126 24 24 24 24 24],dn_=[24 24 24 24 24 126 60 24],ud_=[24 60 126 24 24 k}126 60 24],sl_=[60 66 153 165 165 153 66 60],er_=[255 195 195 195 195 195 195 255],rm_=[255 195 195 219 219 195 195 255],l}pf_=[32 8 32 8 32 8 126 255],pf2_=[16 4 16 4 16 4 126 255],noe_=[0 0 0 0 0 0 126 255],cf_=[60 48 48 60 0 0 126 255],gf_=[m}48 12 48 12 48 12 126 255],wa_=[255 255 255 255 255 255 255 255],poi_=[170 170 170 170 170 170 170 170],fir_=[85 85 85 85 n}85 85 85 85],lig_=[51 204 51 204 51 204 51 204],alt_=[0 0 84 84 84 16 84 0],sd_=[255 189 255 255 255 255 189 255]CARD ARo}RAY dm(9),tm(18),bs(16),ts(14),ds(9),mdn(5),sof(2),pcnt(6),dis(23),m640=[0 640 1280 1920 2560 3200 3840 44805120 5760 640p}0],CasBuf=1024PROC CIO=$E456(BYTE A,BYTE X)CARD FUNC Burst(BYTE chan,mode,CARD addr,buflen)TYPE IOCB=[BYTE id,num,cmd,sq}tatCARD badr,padr,blenBYTE a1,a2,a3,a4,a5,a6]IOCB POINTER iptrchan==&$07iptr=$340+(chan LSH 4)iptr.cmd=modeiptr.blen=br}ufleniptr.badr=addrCIO(0,chan LSH 4)RETURN(iptr.blen)CARD FUNC BGet(BYTE chan CARD addr,len)CARD temptemp=Burst(chan,7s},addr,len)RETURN(temp)PROC BPut(BYTE chan CARD addr,len)Burst(chan,11,addr,len)RETURN;SpartaDos X only!;PROC Siocall=t}2144();CALLS LSIOPROC Siocall=$E459();Normal SIOddr,len)Burst(chan,11,addr,len)RETURN;SpartaDos X only!;PROC Siocall=3i=$FFj=$FEoq=$F9kky=$F8dly=$F7dlacc=$F6dlk=$F5EStack=$F4vis=$F3icnn=$F2icnt=$EEIR0=$A0IR1=$A2IR2=$A4IR3=$A6IR4 v}=$A8IR5=$AAIR6=$ACIR7=$AEL1=40880;gr8 lineL2=40920;gr0 line;BYTE:DDev=768DUNIT=769DCOM=770IODIR=771Siostatus=771k w}eyp=764rnd=53770dma=559dma2=54272Stick0=632Strig0=644consol=53279bg=710fg=709p0x=53248p1x=53249pc0=704pc1=705pmb x}=54279gractl=53277ps0=53256ps1=53257gprior=623vdel=53276t20=20Cmd=$B0gyy=$B1gxx=$B2icn=$B3rx=$B4ry=$B5xx=$B6yy= y}$B7mx=$B8my=$B9md=$BA;md:0=brit,1=twn,2=dng,3=screen,4=dngscreendvn=$BBsf=$BCsk=$BDsmd=$BEsic=$BFs_dir=$C0ox=$C1oy z}=$C2oyv=$C3per=$C4Ptyp=$C5Ttyp=$C6TextMode=$C7crmd=$C8ocrmd=$C9mlacc=$CAmlk=$CBmly=$CCkkk=$CD;CARD:DSECTOR=778 {}BUFADR=772TIMEOUT=774SECSIZE=776dl=560Sec=$CE;,$CFcnt=$D0;7 byte long count buffersc_=$FC;,$FDpp=$FA;,$FB;"Pointer": |}gsc=94;,95gr0=30464;1024 byte gr0 scr buf;it overlaps both hbuf1 and hbuf2hbuf1=31232;121 byte disp bufhbuf2=31360;121 b }}yte hold bufSc=31488;1k long screen bufPe=32512;1page long people bufgr8=32768;640 bytesDL0=33536;32 bytes gr0 display li ~}stDL8=33582;210 bytes gr8 display listUnPe=33792;32 byte bufscadr=33824;beginning of gr8 scrPA=40960;8k long character bu }ftmp=960;40 byte temp bufcmax .BYTE 1,14,16,12,7,7,175FiEx .SBYTE 49,""MenuData .SBYTE 49,"| Р } " .SBYTE 50,"" .SBYTE 42,"World map" .SBYTE 47,"|World screen #" .SBYTE 33,"" .SBYTE 47,"Towne } #" .SBYTE 33,"" .SBYTE 47,"Towne screen #" .SBYTE 33,"" .SBYTE 47,"Dungeon #" .SBYTE 33,"" .SBYTE 47, }"Dungeon scrn #" .SBYTE 33,"|" .SBYTE 47,"Dungeon room #" .SBYTE 50,"" .SBYTE 49,"|X: |Y: |elp" } .SBYTE 45,"|ScMode:World" .SBYTE 49,"|Show:Off|Sectors" .SBYTE 50,"View:Off|Text:Off" .SBYTE 42,"" .SBYTE 42 },"| | |ic#:" .SBYTE 42,"g: |000:"?1 .SBYTE 39,"World "?2 .SBYTE 39,"Towne "?3 .SBYTE 39,"Dungeon"?4 .SBYTE 39,"Scr }een "?5 .SBYTE 39,"Room "mdnL .BYTE ?1,>?2,>?3,>?4,>?5?S_ .SBYTE 40,"Sectors "?F_ .SBY }TE 40,"File ı"sofL .BYTE ?S_,>?F_?A .SBYTE 41,"Grassland"?B .SBYTE 37,"Brick"?C .SBYTE 35,"Hex" }?D .SBYTE 41,"Land-Ship"?E .SBYTE 37,"Woods"?F .SBYTE 43,"Light Woods"?G .SBYTE 36,"Hill"?H .SBYTE 41,"Ship-Land"?I .SBY }TE 42,"Land-Water"?J .SBYTE 42,"Ship-Water"?K .SBYTE 38,"Bridge"?L .SBYTE 37,"Swamp"?M .SBYTE 42,"Inn Ambush"tsL .BYTE < }?A,?A,>?B,>?C,>?D,>?E,>?F,>?G .BYTE >?H,>?I,>?J,>?K, }>?L,>?M?N .SBYTE 41,"Ship-Ship"?O .SBYTE 38,"Shrine"?P .SBYTE 46,"Hole up & Camp"bsL .BYTE ?A,>?B,>?C,>?D,>?E,>?F,>?G .BYTE >?H,>?I,>?J,>?K,>?L,>?N,>?O,>?P?AA }.SBYTE 49,"Britannia Level 1"?BB .SBYTE 39,"Lycaeum"?CC .SBYTE 44,"Empath Abbey"?DD .SBYTE 46,"Serpent's Hold"?EE .SBYTE }40,"Moonglow"?FF .SBYTE 39,"Britain"?GG .SBYTE 38,"Jhelom"?HH .SBYTE 35,"Yew"?II .SBYTE 37,"Minoc"?JJ .SBYTE 39,"Trinsic }"?KK .SBYTE 42,"Skera Brae"?LL .SBYTE 40,"Magincia"?MM .SBYTE 36,"Paws"?NN .SBYTE 46,"Buccaneers Den"?OO .SBYTE 38,"Vesp }er"?PP .SBYTE 36,"Cove"?QQ .SBYTE 49,"Britannia Level 2"tmL .BYTE ?AA,>?BB,>?CC,>?DD,>?EE,>?FF,>?GG .BYTE >?HH,>?II,>?JJ,>?KK,>?LL,>?MM, }>?NN,>?OO .BYTE >?PP,>?QQ??A .SBYTE 38,"Deceit"??B .SBYTE 39,"Despise"??C .SBYTE 39,"Destard"??D .SBYTE 37,"Wrong"??E }.SBYTE 40,"Covetous"??F .SBYTE 37,"Shame"??G .SBYTE 40,"Hythloth"??H .SBYTE 47,"The Great Abyss"dmL .BYTE ??A,>??B,>??C,>??D,>??E,>??F,>??G,>??H?_A .SBYTE 40,"Corridor"?_B .SBYTE 41,"Up Ladder }"?_C .SBYTE 43,"Down Ladder"?_D .SBYTE 48,"Up & Down Ladder"?_E .SBYTE 37,"Chest"?_F .SBYTE 36,"Door"?_G .SBYTE 43,"Secr }et Door"?_H .SBYTE 36,"Wall"?_I .SBYTE 36,"Ball"?_J .SBYTE 37,"Altar"?_K .SBYTE 44,"Poison Field"?_L .SBYTE 47,"Lightni }ng Field"?_M .SBYTE 42,"Fire Field"?_N .SBYTE 43,"Sleep Field"?_O .SBYTE 37,"Winds"?_P .SBYTE 45,"Falling Rocks"?_Q .SBY }TE 40,"Pit Trap"?_R .SBYTE 50,"No Effect Fountain"?_S .SBYTE 48,"Healing Fountain"?_T .SBYTE 44,"Bad Fountain"?_U .SBYTE }45,"Cure Fountain"?_V .SBYTE 49,"Poisoned Fountain"?_W .SBYTE 36,"Room"dsL .BYTE ?_A,>?_B,>?_C,>?_D,>?_E,>?_F,>?_G,>?PdisL .BYTE ?_A,>?_B,>?_C,>?_D,>?_E,>?_F,>?_G .BYTE >?_H,>?_I, }>?_J,>?_K,>?_L,>?_M,>?_N,>?_O .BYTE >?_P,>?_Q,>?_R,>?_S,>?_T,>?_U,>?_V,>?_WpcntLL .BYTE bsL,>bsL,>tmL,>tsL,>dmL,>dsLpcntHL .BYTE bsH,>bsH,>tmH,>tsH,>dmH,>dsH }SDir .SBYTE "NESW"ToV .BYTE 0,16,32,48,64,192,224,240,112 .BYTE 176,160,161,162,163,128,129,142 .BYTE 144,145,146,147,14 }8,108Scs .BYTE "Dn:xSCREEN.000",155Brit .BYTE "Dn:WORLD.MAP",155up_ .BYTE 24,60,126,24,24,24,24,24dn_ .BYTE 24,24,24,24, }24,126,60,24ud_ .BYTE 24,60,126,24,24,126,60,24sl_ .BYTE 60,66,153,165,165,153,66,60er_ .BYTE 255,195,195,195,195,195,195, }255rm_ .BYTE 255,195,195,219,219,195,195,255pf_ .BYTE 32,8,32,8,32,8,126,255pf2_ .BYTE 16,4,16,4,16,4,126,255noe_ .BYTE 0 },0,0,0,0,0,126,255cf_ .BYTE 60,48,48,60,0,0,126,255gf_ .BYTE 48,12,48,12,48,12,126,255wa_ .BYTE 255,255,255,255,255,255,25 }5,255poi_ .BYTE 170,170,170,170,170,170,170,170fir_ .BYTE 85,85,85,85,85,85,85,85lig_ .BYTE 51,204,51,204,51,204,51,204al }t_ .BYTE 0,0,84,84,84,16,84,0sd_ .BYTE 255,189,255,255,255,255,189,255chadL .BYTE <57344,57344,>up_,>dn_,>ud_,>57376 .BYTE >er_,>sd_,>wa_,>58016,>alt_,>poi_ .BYTE >lig_,>fir_,>sl_,>57784,>57744 .BYTE >5 }7728,>noe_,>gf_,>pf_,>cf_,>pf2_ .BYTE >rm_m640L .BYTE 0,<640,<1280,<1920,<2560,<3200 .BYTE <3840,<4480,<5120,<5760,<6400 }m640H .BYTE 0,>640,>1280,>1920,>2560,>3200 .BYTE >3840,>4480,>5120,>5760,>6400 .LOCALCIO=$E456@Burst STA $342,X LDA I }R0 STA $344,X LDA IR0+1 STA $345,X LDA IR1 STA $348,X LDA IR1+1 STA $349,X JSR CIO CPY #1 BEQ ?RTS STY IR6 JMP IO }ERROR?RTS RTSBGETx LDA #7 JSR @Burst LDA $348,X STA IR1 LDA $349,X STA IR1+1 RTSBPUTx LDA #11 JSR @Burst BEQ ? }RTS STY IR6 RTS .MACRO BGET LDX #%1*16 JSR BGETx .ENDM .MACRO BPUT LDX #%1*16 JSR BPUTx .ENDM;SIOCALL=2144;LSIO }SpartaDos X onlySIOCALL=$E459IO LDA #'1 STA DDEV LDA #1 STA DUNIT LDA CMD STA DCOM CMP #'R BNE ?DOWR LDA #64 BNE }?SKDOWR?DOWR LDA #128?SKDOWR STA IODIR LDA SC_ STA BUFADR LDA SC_+1 STA BUFADR+1 LDA #10 STA TIMEOUT LDA #128 STA S }ECSIZE LDA #0 STA SECSIZE+1 LDA SEC STA DSECTOR LDA SEC+1 STA DSECTOR+1 JSR SIOCALL LDA SioStatus BPL ??EIO STA IR6 } JMP IOERROR??EIO RTS;IR7=# OF SECTORS TO R or WRWSEC JSR IO INC SEC BNE ?SEC INC SEC+1?SEC CLC LDA #128 ADC SC_ }STA SC_ BCC ?SC_ INC SC_+1?SC_ DEC IR7 BNE RWSEC RTSCLDISPLAY LDX #176 LDA #SCADR STA ? }@CLP+2?CLP LDA #0 LDY #21?@CLP STA $FFFF,Y DEY BPL ?@CLP CLC LDA ?@CLP+1 ADC #40 STA ?@CLP+1 BCC ?CLSK INC ?@CLP+2 }?CLSK DEX BNE ?CLP RTS?@CLP STA $FFFF,Y DEY BPL ?@CLP CLC LDA ?@CLP+1 ADC #40 STA ?@CLP+1 BCC ?CLSK INC ?@CLP+2 ;;This program allows you to edit the;ultima cell-font(UFN).;For some reason it requires joystick;input for cursor moveme}nt and dot;placement.;BYTE keyp=764,rnd=53770,gprior=623,x,y,gractl=53277,vdelay=53276,pmbase=54279,bg=710,tc=709,dma=55}9,crsinh=752,lm=82,rm=83,chbase=756,dma2=54272,xp=85,ep,yp=84,xx,yy,e,invflg=694,shflok=702,vcount=54283,CBufCARD sc=88,P}ma,Cha,Dl=560,lDlDEFINE Buf="8192"BYTE ARRAY Pa(Buf),pc=704,px=53248,ps=53256,nex=[0 0 60 126 126 126 60 0],Chp,Chp16,sc}p,fn(20),pn,tmp=1024,ned=[0 20 20 20 20 54 107 73],necwz=[0 0 6 254 0 0 0 0 0 0 96 127 0 0 0 0 0 0 0 0 127 96 0 0 0 0 0 }0 254 6 0 0],gr8(640)=37632,dfns="D1:*.UFN",dfn(20)CARD ARRAY row(22),BAdr=960PROC nDl=*()[112 112 112 66 40080 2 2 2 2 }2 22 2 2 2 2 2 2 2 2 2 2 2 2 2;+2779 0 0 15 15 15 15 15 15 1515 15 15 15 15 15 15 1566 40920 65 39968]PROC eDl=*()PRO}C SetH()CARD ew;[lda #16 sta $CC lda ew tax clc; adc #20 sta $CD ldy #0 lda gr8; sta $CA lda gr8+1 sta $CB; lda pa+1 sta} pah+1 clc adc #16; sta pah1+1 lda pa sta pah sta pah1;rep: lda Pa,x sta ($CA),y iny; lda Pa+4096,x sta ($CA),y iny ; bne} sjp inc $CB sjp:; inx cpx $CD bne rep; dec $CC beq out ldx ew ; inc pah+1 inc pah1+1 bne rep;out: rts]ew=ep-9[169 16 1}33 $CC 173 ew 170 24 105 20 133 $CD 160 0 173 gr8 133 $CA 173 gr8+1 133 $CB 173 pa+1 141 *+19 24 105 16 141 *+19 173 pa }141 *+6 141 *+9 189 $FFFE 145 $CA 200 189 $FFFF 145 $CA 200 208 2 230 $CB 232 228 $CD 208 235 198 $CC 240 11 174 ew 238} *+$FFE5 238 *+$FFE8 208 220];-27,-24xp=18 yp=19PrintB(ep) Put(' ) Put(' )RETURNPROC CIO=$E456(BYTE A,X)CARD FUNC Bur}st(BYTE chan,mode,CARD addr,buflen)TYPE IOCB=[BYTE id,num,cmd,statCARD badr,padr,blenBYTE a1,a2,a3,a4,a5,a6]IOCB POINTER} iptrchan==&$07iptr=$340+(chan LSH 4)iptr.cmd=modeiptr.blen=bufleniptr.badr=addrCIO(0,chan LSH 4)RETURN(iptr.blen)CA}RD FUNC BGet(BYTE chan CARD addr,len)CARD temptemp=Burst(chan,7,addr,len)RETURN(temp)PROC BPut(BYTE chan CARD addr,len)}Burst(chan,11,addr,len)RETURNPROC SetPx()px(0)=52px(1)=52px(2)=52+32px(3)=52+32RETURNPROC Place();[lda pa sta $CA }lda pa+1 sta $CB;ldy ep ldx #0 rep:lda ($CA),y;sta Chp,x inc $CB inx cmp #32 bne rep][173 pa 133 $CA 173 pa+1 133 $CB172 }ep 162 0 177 $CA 157 39424230 $CB 232 224 32 208 244]RETURNPROC Replace();[lda pa sta $CA lda pa+1 sta $CB;ldy ep ldx #}0 rep:lda Chp,x;sta ($CA),y inc $CB inx cmp #32 bne rep][173 pa 133 $CA 173 pa+1 133 $CB172 ep 162 0 189 39424 145 $CA230} $CB 232 224 32 208 244]RETURNPROC DispMenu()lm=18 xp=18 yp=0PrintE(" UltFont v1.0 by JRL")PrintE("dit oad ave")P}rintE("lear diralue")PrintE("otatebuf utput")PrintE("uit dir? Inverse")PrintE("lace Str Stretch")Pr}intE("Copy: oromline")PrintE("Mirror options:")PrintE("lr lr nvert")PrintE("du ud irror")PutE()P}rintE("Window options:")PrintE("left one right one")PrintE("left 10 right 10")PrintE("goto number")lm=0RETURNPRO}C Pln=*();ldy #0;DO;lda $CC and #128;sta ($CA),y asl $CD rol $CC;iny cpy #16 beq 3;OD[160 0]DO [165 $CC 41 128 145 $}CA 6 $CD 38 $CC 200 192 16 240 3]ODRETURNPROC Dsp=*();clc lda #41 adc 88 sta $CA lda 89;adc #0 sta $CB ldx #0; DO;ld}a Chp,x sta $CC lda Chp16,x sta $CD;jsr Pln clc lda $CA adc #40 sta $CA;bcc 2 inc $CB inx cpx #16 beq 3; OD[24 169 41 101} 88 133 $CA 165 89105 0 133 $CB 162 0]DO [189 39424 133 $CC 189 39440 133 $CD] Pln() [24 165 $CA 105 40 133 $CA 144 2 23}0 $CB 232 224 16 240 3]OD[96]PROC DrawBuf=*(BYTE a);asl a tay asl a ora #64 tax;lda BAdr,y sta $CA lda BAdr+1,y;sta $C}B ldy #0 lda #90;sta ($CA),y iny lda #91 sta ($CA),y;txa ldy #40 sta ($CA),y iny clc adc #2;sta ($CA),y ldy #80 inx txa;s}ta ($CA),y iny clc adc #2;sta ($CA),y[10 168 10 9 64 170 185 960 133 $CA185 961 133 $CB 160 0 169 90 145 $CA200 169 91 14}5 $CA 138 160 40 145 $CA200 24 105 2 145 $CA 160 80 232 138145 $CA 200 24 105 2 145 $CA 96]PROC OMark=*();asl a tay lda }BAdr,y sta $CA;lda BAdr+1,y sta $CB ldy #0;lda #90+128 sta ($CA),y iny;lda #91+128 sta ($CA),y[10 168 185 960 133 $CA185} 961 133 $CB 160 0 169 218 145 $CA200 169 219 145 $CA 96]PROC OverBuf=*();lda CBuf jsr OMark ldy #40 lda #64;sta ($CA),y} iny lda #66 sta ($CA),y;ldy #80 lda #65 sta ($CA),y iny;lda #67 sta ($CA),y[173 CBuf 32 OMark 160 40 169 64145 $CA 200 1}69 66 145 $CA 160 80 169 65145 $CA 200 169 67 145 $CA 96]PROC Init()BYTE POINTER p0,p1,p2,p3CARD tGraphics(0)dma=0 dma}2=0crsinh=1sc=40080t=scFOR x=0 TO 21 DO row(x)=t t==+40 ODBAdr^=row(17)+8t=row(17)+26FOR x=1 TO 5 DO BAdr(x)=t t==+2}ODlm=0 rm=39 bg=0 tc=12gprior=1[169 134 141 704 141 706169 214 141 705 141 707]FOR x=0 TO 3 DO ps(x)=3 px(x)=0 ODPma=15}2-4 Pma==LSH 8 Zero(Pma+512,512)p0=Pma+512 p1=p0+128 p2=p1+128 p3=p2+128x=170t=0FOR y=20 TO 20+63 DO p0(y)=x p2(y)=x p}1(y)=x!255 p3(y)=x!255 t==+1 IF t=4 THEN t=0 x==!255 FIODCha=152 Cha==LSH 8pmbase=152-4;handle character setMoveBlock}(Cha,57344,1024)Chp=Cha+512Chp16=Chp+16chbase=152gractl=2 vdelay=0Zero(Pa,Buf)xx=7 yy=7MoveBlock(Cha+8,nex,8)MoveBloc}k(Cha+32,ned,8)MoveBlock(Cha+704,necwz,32)Zero(Chp,192);it and five buffersep=0invflg=0shflok=64;xp=8 yp=18;Print(""});xp=8 yp=19;Print("")FOR y=0 TO 5 DO DrawBuf(y)ODCBuf=1Dl==&65280lDl=eDl-nDlMoveBlock(Dl,nDl,lDl)PokeC(Dl+lDl-2,}Dl)PokeC(Dl+4,40080)PokeC(Dl+27,gr8)xp=18yp=21 Print("")DispMenu()Place()Dsp()SetH();[lda #91 ldy #40 dey sta 4088}0,y dey;bne rep lda #90 ldy #40 dey;sta 40879,y dey bne rep][169 91 160 40 136 153 40880 136208 249 169 90 160 40 136153} 40879 136 208 249] OverBuf()SetPx()dma=34+8RETURNPROC GetFn(BYTE POINTER t)xp=18 yp=16Print(t)Print(":")InputS(tmp})IF tmp^=0 THEN fn^=0 RETURN FIIF (tmp(2)#':) AND (tmp(3)#':) THEN fn(1)='D fn(2)=': fn^=tmp^+2 SAssign(fn,tmp,3,2+tmp^)}ELSE SCopy(fn,tmp)FISAssign(fn,".UFN",fn^+1,fn^+1+3)RETURNPROC Outpt(BYTE POINTER t)xp=18 yp=16Zero(40738,22)Print(}t)RETURNBYTE FUNC DoDir(BYTE n)IF n=0 THEN SCopy(dfn,tmp)ELSE SCopy(dfn,dfns) dfn(2)=nFIClose(1)Open(1,dfn,6,0)DO} InputMD(1,fn,20) Outpt(fn) n=GetD(7)UNTIL ((n=') OR (fn(2)#' )) OR (n=155) ODRETURN(n) PROC LoadCore()Close(1)Open}(1,fn,4,0)BGet(1,Pa,Buf)Close(1)Outpt("Loaded.")RETURNPROC SLoad(BYTE n)IF fn(2)#' THEN Outpt("") RETURNFISCopy(tm}p,"Dn:")tmp(2)=nFOR y=3 TO 10 DO IF fn(y)#' THEN tmp(y+1)=fn(y) ELSE EXIT FIODtmp(y+1)='. y==+2FOR x=0 to 2 DO }IF fn(11+x)#' THEN tmp(y+x)=fn(11+x) ELSE EXIT FIODtmp^=y+x-1SCopy(fn,tmp)LoadCore()SetH()RETURNPROC JSound()}BYTE c,dc=15DO Sound(0,200,0,c) d=200 DO d==-1 UNTIL d=0 OD c==-1UNTIL c=255 ODRETURNPROC TSound()BYTE c,dc=15DO} Sound(0,200-c,10,c) d=120 DO d==-1 UNTIL d=0 OD c==-1UNTIL c=255 ODRETURNPROC Edit()BYTE POINTER pBYTE tlattlat=0}DO p=row(yy+1)+xx+1 p^==!1 DO y=Stick(0) IF Strig(0)=1 THEN tlat=0 FI UNTIL ((y#15) OR (keyp#255)) OR (Strig(0)=0) OD} IF Strig(0)=0 THEN IF tlat=0 THEN p^==!128 Chp(yy+((xx&8) LSH 1))==!(128 RSH (xx&7)) TSound() tlat=1 FI FI} IF y#15 THEN IF (y&1)=0 THEN yy==-1 ELSEIF (y&2)=0 THEN yy==+1 FI IF (y&4)=0 THEN xx==-1 ELSEIF (y&8)=0 T}HEN xx==+1 FI IF xx=16 THEN xx=0 ELSEIF xx=255 THEN xx=15 FI IF yy=16 THEN yy=0 ELSEIF yy=255 THEN yy=15 FI JS}ound() tlat=0 FI p^==!1 Poke(77,0)UNTIL keyp#255 ODRETURNBYTE FUNC Numkeyp(BYTE a)IF ((a=24) OR (a=26)) OR (a=27) O}R (a=29) OR (a=30) OR (a=31) OR (a=48) OR (a=50) OR (a=51) OR (a=53) THEN RETURN(1) ELSE RETURN (0) FIPROC DoVal()BYTE a,}b,cx=0 y=1DO xp=x yp=y IF x THEN a=Chp16(y-1) Put('<) ELSE a=Chp(y-1) Put('>) FI xp=17 yp=17 Outpt("") PrintB}(a) b=x c=y DO a=keyp IF numkeyp(a) THEN crsinh=0 Outpt("") InputS(tmp) crsinh=1 Put(') Outpt("") IF tm}p^#0 THEN IF tmp(1)<'0 OR tmp(1)>'9 THEN Outpt("?") EXIT ELSE Outpt("") a=ValB(tmp) IF x THEN } Chp16(y-1)=a ELSE Chp(y-1)=a FI Dsp() FI ELSE keyp=12 EXIT FI Outpt("") keyp=15;} FI IF a=14 THEN;'- y==-1 IF y=0 THEN y=16 x==!17 FI EXIT ELSEIF a=15 THEN;'= y==+1 IF y=17 THEN y=1 x==!17 FI E}XIT ELSEIF (a=6) OR (a=7) THEN;'+;'* x==!17 EXIT FI UNTIL a=47 OR a=28 OD a=GetD(7) xp=b yp=c Put(' ) IF (a='Q) OR} (a=') THEN Outpt("") RETURN FIODRETURNPROC Ins(BYTE xx,qq)BYTE j,k,lCARD t y=xx t=0 IF y THEN DO;form mask } t==RSH 1+32768 y==-1 UNTIL y=0 OD FI y=15 k=255-(t&255) x=255-(t RSH 8) IF qq=0 THEN t==RSH 1+32768 FI} j=t l=t RSH 8 DO tmp(y)=Chp(y)&l Chp(y)==&x tmp(y+16)=Chp16(y)&j Chp16(y)==&k y==-1 UNTIL y=255 OD;[ldx #15 }R:lsr 39424,x ror 39440,x;lda 39424,x ora tmp,x sta 39424,x;lda 39440,x ora tmp+16,x sta 39440,x;dex bpl R:] [162 15 94 3}9424 126 39440 189 39424 29 1024 157 39424 189 39440 29 1024+16 157 39440 202 16 229]RETURNPROC Norm=*()[160 0 169 90 }145 $CA 200 169 91145 $CA 96]PROC CopyB(BYTE bop CARD t,f)Norm()[173 bop 141 *+26 160 31173 f 133 $CA 173 f+1 133 $CB1}73 t 133 $CC 173 t+1 133 $CD177 $CA $FF $CC 145 $CC136 16 247 96]PROC CopySel(BYTE typ);0=to, 1=fromBYTE k,nCARD t,fIF} typ THEN Outpt("From:")ELSE Outpt("To:")FIPrint(" ")IF CBuf=1 THEN n=2 ELSE n=1 FIDO [173 n 32 OMark] k=Ge}tD(7) IF k=155 THEN EXIT FI Norm() IF k='> THEN n==MOD 5+1 IF n=CBuf THEN n==MOD 5+1 FI ELSEIF k='< THEN n==-1 IF n}=0 THEN n=5 FI IF n=CBuf THEN n==-1 IF n=0 THEN n=5 FI FI ELSEIF k=' THEN Outpt("") RETURN FIOD[160 0 173 typ }240 4 169 ' 208 2169 ' 145 $CA 200 145 $CA]Outpt("Mask:ndorr none")IF typ THEN t=Chp f=Chp+32*nELSE t=Chp+32*n }f=ChpFIDO k=GetD(7) IF k=' THEN Norm() RETURN ELSEIF k='A THEN CopyB(49,t,f) RETURN ELSEIF k='E THEN CopyB(}81,t,f) RETURN ELSEIF k='O THEN CopyB(17,t,f) RETURN ELSEIF k=155 THEN Norm() Moveblock(t,f,32) RETURN FIOD}PROC Loop()BYTE j,k,lCARD tDO Edit() Outpt("") k=keyp&63 IF k=39 THEN k='i keyp=255 ELSEIF (k=60) OR (k=17) THEN} k=' keyp=255 ELSE k=GetD(7) FI IF k='C THEN Zero(Chp,32) Dsp() ELSEIF k='_ THEN FOR y=0 TO 7 DO Chp(y)=Ch}p(15!y) Chp16(y)=Chp16(15!y) OD Dsp() ELSEIF k='| THEN FOR y=8 TO 15 DO Chp(y)=Chp(15!y) Chp16(y)=Chp16(15!y)} OD Dsp() ELSEIF k='^ THEN;[ldx #15 rep1:ldy #8 lda 39424,x;rep:lsr a rol 39440,x dey bne rep;dex bpl rep1] [162 15} 160 8 189 39424 74 62 39440 136 208 249 202 16 241] Dsp() ELSEIF k='\ THEN;[ldx #15 rep1:ldy #8 lda 39440,x;rep:l}sr a rol 39424,x dey bne rep;dex bpl rep1] [162 15 160 8 189 39440 74 62 39424 136 208 249 202 16 241] Dsp() ELSE}IF k='M THEN;[ldx #15 rep1:ldy #8 lda 39424,x;rep:lsr a rol tmp+16,x dey bne rep;dex bpl rep1] [162 15 160 8 189 39424  } 74 62 1024+16 136 208 249 202 16 241];[ldx #15 rep1:ldy #8 lda 39440,x;rep:lsr a rol 39424,x dey bne rep;lda 1024+16, }x sta 39440,x dex bpl rep1] [162 15 160 8 189 39440 74 62 39424 136 208 249 189 1024+16 157 39440 202 16 235] Ds }p() ELSEIF k='I THEN FOR y=0 TO 7 DO j=Chp(y) l=15!y Chp(y)=Chp(l) Chp(l)=j j=Chp16(y) Chp16(y)=Chp16(l)  } Chp16(l)=j OD Dsp() ELSEIF k='i THEN FOR y=0 TO 31 DO Chp(y)==!255 OD Dsp() ELSEIF k='T THEN CopySel(0) D }sp() Outpt("") ELSEIF k='F THEN CopySel(1) Dsp() Outpt("") ELSEIF k='= THEN y=15 l=Chp(15) j=Chp16(15) DO } Chp(y)=Chp(y-1) Chp16(y)=Chp16(y-1) y==-1 UNTIL y=0 OD Chp^=l Chp16^=j Dsp() k='= ELSEIF k='- THEN l=Chp}^ j=Chp16^ FOR y=0 TO 30 DO Chp(y)=Chp(y+1) OD Chp(15)=l Chp(31)=j Dsp() k='- ELSEIF k='* THEN;[ldx #15 R:}lda 39440,x and #1 lsr a;ror 39424,x ror 39440,x dex bpl R:] [162 15 189 39440 41 1 74 126 39424 126 39440 202 16 241]} Dsp() ELSEIF k='+ THEN;[ldx #15 R:lda 39440,x and #128 asl a;rol 39424,x rol 39440,x dex bpl R:] [162 15 189 39440 41 }128 10 62 39424 62 39440 202 16 241] Dsp() ELSEIF k=' THEN Ins(xx,1) Dsp() ELSEIF k=' THEN IF xx#15 THEN In}s(xx,0) Dsp() FI ELSEIF k=' THEN y=xx t=0 IF y THEN DO;form mask t==RSH 1+32768 y==-1 UNTIL y=0 OD} FI y=15 j=t l=t RSH 8 t==RSH 1+32768 t=65535-t x=t RSH 8 k=t DO tmp(y)=Chp(y)&l Chp(y)==&x tmp(y+16)=Chp16}(y)&j Chp16(y)==&k y==-1 UNTIL y=255 OD;[ldx #15 R:asl 39440,x rol 39424,x;lda 39424,x ora tmp,x sta 39424,x;lda 3944}0,x ora tmp+16,x sta 39440,x;dex bpl R:] [162 15 30 39440 62 39424 189 39424 29 1024 157 39424 189 39440 29 1024+16 157 3}9440 202 16 229] Dsp() ELSEIF k=' THEN IF yy#15 THEN FOR y=yy TO 14 DO Chp(y)=Chp(y+1) Chp16(y)=Chp16(y+1)} OD FI Chp(15)=0 Chp(31)=0 Dsp() ELSEIF (k=') OR (k=') THEN IF yy#15 THEN y=15 DO Chp(y)=Chp(y-1) }Chp16(y)=Chp16(y-1) y==-1 UNTIL y=yy OD FI IF k=' THEN Chp(yy)=0 Chp16(yy)=0 FI Dsp() ELSEIF k='R THEN }l=1 Zero(tmp,32) FOR y=0 TO 7 DO j=0 DO tmp(y)==LSH 1 IF Chp16(j)&l THEN tmp(y)==+1 FI tmp(y+1}6)==LSH 1 IF Chp16(j+8)&l THEN tmp(y+16)==+1 FI tmp(y+8)==LSH 1 IF Chp(j)&l THEN tmp(y+8)==+1 F}I tmp(y+24)==LSH 1 IF Chp(j+8)&l THEN tmp(y+24)==+1 FI j==+1 UNTIL j=8 OD l==LSH 1 OD MoveBloc}k(Chp,tmp,32) Dsp() ELSEIF k='S THEN GetFn("Save") IF fn^#0 THEN Close(1) Open(1,fn,8,0) BPut(1,Pa,Buf) Cl}ose(1) Outpt("Saved.") ELSE Outpt("") FI ELSEIF k='L THEN GetFn("Load") IF fn^#0 THEN LoadCore() SetH()} ELSE Outpt("") FI ELSEIF k='< OR k='> THEN ;copy edit buff to buff Moveblock(Chp+32*CBuf,Chp,32) DrawBuf(CBuf) } IF k='< THEN CBuf==-1 IF CBuf=0 THEN CBuf=5 FI ELSE CBuf==+1 IF CBuf=6 THEN CBuf=1 FI FI ;copy buff to edit buf!}f MoveBlock(Chp,Chp+32*CBuf,32) OverBuf() Dsp() ELSEIF (k>'0) AND (k<='9) THEN IF DoDir(k)=155 THEN SLoad(k) EL"}SE Outpt("") FI ELSEIF k='V THEN DoVal() ELSEIF k='? THEN Outpt("Filespec:") y=xp crsinh=0 Print(dfns) xp=y Pr#}int("") InputS(tmp) crsinh=1 Put(') j=tmp(2) IF tmp^#0 THEN IF DoDir(0)=155 THEN IF j=': THEN SLoad('1)$} ELSE SLoad(j) FI ELSE Outpt("") FI ELSE Outpt("") FI ELSEIF k='E THEN Place() Dsp() ELSEI%}F k='P THEN Replace() SetH() ELSEIF k='. THEN ep==+1 SetH() ELSEIF k=', THEN ep==-1 SetH() ELSEIF k='[ THEN &}ep==-10 SetH() ELSEIF k='] THEN ep==+10 SetH() ELSEIF (k=';) OR (k=':) THEN Outpt("#(0-255):") InputS(tmp) IF t'}mp^ THEN IF tmp(1)<'0 OR tmp(1)>'9 THEN Outpt("?") ELSE Outpt("") ep=ValB(tmp) SetH() FI ELSE O(}utpt("") FI FIUNTIL k='Q ODRETURNPROC Main()Init()Loop()FOR x=0 TO 3 DO px(x)=0ODgractl=0;dma=34;chbase=224cr)}sinh=0Graphics(0)RETURNQ ODRETURNPROC Main()Init()Loop()FOR x=0 TO 3 DO px(x)=0ODgractl=0;dma=34;chbase=224cr;;This program gets the 64K Brittannia;Map off of the Brittannia disk and;places it on another disk drive as;a file named+} BRIT.MAP.;BYTE DUNIT=769,Dsk,Cmd,DCOM=770,Siostatus=771,IODIR=771,cbCARD SIZE=776,DSECTOR=778,SEC,BUFADR=772,Tmt,TIMEOU,}T=774,SECSIZE=776BYTE ARRAY SC,pd(16384)PROC SIOCALL=2144();CALLS LSIOPROC CIO=$E456(BYTE A,BYTE X)CARD FUNC Burst(BYT-}E chan,mode,CARD addr,buflen)TYPE IOCB=[BYTE id,num,cmd,statCARD badr,padr,blenBYTE a1,a2,a3,a4,a5,a6]IOCB POINTER iptr.}chan==&$07iptr=$340+(chan LSH 4)iptr.cmd=modeiptr.blen=bufleniptr.badr=addrCIO(0,chan LSH 4)RETURN(iptr.blen)CARD FUN/}C BGet(BYTE chan CARD addr,len)CARD temptemp=Burst(chan,7,addr,len)RETURN(temp)PROC BPut(BYTE chan CARD addr,len)Burst(0}chan,11,addr,len)RETURNPROC IO()POKE(768,49)DUNIT=1 DCOM='RIODIR=64BUFADR=Sc TIMEOUT=10SECSIZE=128DSECTOR=SECSiocal1}l()RETURNPROC SwapDisk(BYTE POINTER swapdisk)BYTE kPrint("Insert ")Print(swapdisk)Print("...")k=GetD(7)PutE()RETUR2}NPROC InMAIN()Close(1)SwapDisk("DOS disk")Open(1,"D:BRIT.MAP",8,0);D9: is my Ramdisk.SwapDisk("Brittannia Disk")Poke(3}559,0)FOR cb=0 TO 3 DO sc=pd FOR Sec=17+cb*128 TO 17+cb*128+127 DO Io() sc==+128 OD SwapDisk("DOS disk") BPut(1,pd,4}16384) SwapDisk("Brittannia Disk")ODClose(1)Poke(559,34)RETURN Io() sc==+128 OD SwapDisk("DOS disk") BPut(1,pd,E;;This program gets the Ultima IV;cell-font. My programs expect a .UFN;extension for an Ultima IV font.;BYTE DUNIT=769,6}Dsk,Cmd,DCOM=770,Siostatus=771,IODIR=771CARD SIZE=776,DSECTOR=778,SEC,BUFADR=772,Tmt,TIMEOUT=774,SECSIZE=776BYTE ARRAY SC7},pd(8192)PROC SIOCALL=2144();CALLS LSIOPROC CIO=$E456(BYTE A,BYTE X)CARD FUNC Burst(BYTE chan,mode,CARD addr,buflen)T8}YPE IOCB=[BYTE id,num,cmd,statCARD badr,padr,blenBYTE a1,a2,a3,a4,a5,a6]IOCB POINTER iptrchan==&$07iptr=$340+(chan LSH 49})iptr.cmd=modeiptr.blen=bufleniptr.badr=addrCIO(0,chan LSH 4)RETURN(iptr.blen)CARD FUNC BGet(BYTE chan CARD addr,len):}CARD temptemp=Burst(chan,7,addr,len)RETURN(temp)PROC BPut(BYTE chan CARD addr,len)Burst(chan,11,addr,len)RETURNPROC I;}O()DUNIT=1 DCOM='RIODIR=64BUFADR=Sc TIMEOUT=10SECSIZE=128DSECTOR=SECSiocall()RETURNPROC ReadEm()sc=pdFOR Sec=369 T<}O 369+63 DO Io() sc==+128ODRETURNPROC Write()Close(1)Open(1,"D:ULTIMA.UFN",8,0)BPut(1,pd,8192)Close(1)RETURNPROC=} InMAIN()BYTE kPrintE("Insert Boot Disk and press a key...")k=GetD(7)POKE(768,49)Dsk=1 Tmt=4Cmd='RPoke(559,0)ReadEm()>}Poke(559,34)PrintE("Insert Disk to hold 8K Font File...")k=GetD(7)Poke(559,0)Write()Poke(559,34)PrintE("Done.")RETURN?}oke(559,34)PrintE("Insert Disk to hold 8K Font File...")k=GetD(7)Poke(559,0)Write()Poke(559,34)PrintE("Done.")RETURNHelpScР:Bring up help screen:Peer at gem(Dungeon,World,Towne): Shown itemsA}:Show items toggle^:Quit Program^:Load current highlight^:Save as current highlight^:File/Sector toggle^:Textmode TB}oggle: Trigger types(trigger/overlay1/2):Rotate Dng Screen entry dir (NESW):Convert World/Towne visible to ScreenC}:Highlight -1 or +1 w/shift:-10 or +10shift : by 16 (world only)spacebar/trigger:Place icon/set vals/joystick:D} one square on screen:File mode drive numbertab:Highlight next item w/shift:prev:Fill with current icon:DeE}l current item and pull others up:In val mode:calculate logical RepIc^ means press control keyFill with current icon:Deb* UM ACT 086* INC ACT 011* INCPE ACT 031PROC ClrL2=*()Zero(L2,40)RETURN;write character to graphics screen!G};screen position is unchangedPROC WriteNA(BYTE POINTER h)BYTE z,y,w,xBYTE POINTER p,tIF h^ THEN p=gsc FOR y=1 TO h^ DO!H} t=h(y) w=t&128 t==&127 IF w THEN w=255 FI IF t<32 THEN t==+64 ELSEIF t<96 THEN t==-32 FI t==LSH 3+57344 !I}FOR z=0 TO 7 DO p^=t(z)!w p==+40 OD p==-319 ODFIRETURN;write and change positionPROC Write(BYTE POINTER h)Write!J}NA(h)gsc==+h^RETURN;write and clear rest of linePROC WriteCl(BYTE ARRAY h)BYTE jWrite(h)IF h^>=17 THEN RETURN FIFOR !K}j=1 TO 17-h^ DO Write(" ")ODRETURNPROC Conv=*();tax and #128 sta $FF txa and #127;cmp #96 bcs or cmp #32 bcs sub adc #!L}64;bne or sub:sbc #32 or:ora $FF rts[170 41 128 133 $FF 138 41 127201 96 176 10 201 32 176 4 105 64208 2 233 32 5 $FF 96]!M};write a linePROC WriteL(BYTE POINTER h)CARD j=$CA,k=$CCBYTE l=$FFj=gsc-1 k=h l=h^ gsc==+l;ldy $FF lda ($CC),y jsr Con!N}v sta ($CA),y;dey bne rep rts[164 $FF 177 $CC 32 Conv 145 $CA136 208 246 96]CARD FUNC Strr(BYTE v)BYTE ARRAY h(4)h^=3!O}h(1)=v/100+48v==mod 100h(2)=v/10+48v==mod 10h(3)=v+48RETURN(h)PROC WriteB(BYTE v)CARD qq=Strr(v)Write(q)RETURNPR!P}OC WriteLB(BYTE v)CARD qq=Strr(v)WriteL(q)RETURNPROC WriteL2(BYTE POINTER a)gsc=L2ClrL2()WriteL(a)RETURNBYTE FUNC!Q} AskYN(BYTE POINTER a)BYTE kWriteL2(a)DO k=GetD(7) IF (k=') OR (k='n) OR (k='N) THEN RETURN(0) ELSEIF (k='y) OR (k='!R}Y) THEN RETURN(1) FIODBYTE FUNC PressRet(BYTE POINTER a)WriteL2("Place ")WriteL(a)WriteL(" disk in drive ")tmp^=1I!S}F sf THEN tmp(1)=dvnELSE tmp(1)=49FIWriteL(tmp)WriteL(" & type")DO i=GetD(7) UNTIL (i=155) OR (i=27) ODIF i=1!T}55 THEN RETURN(1)FIRETURN(0)BYTE FUNC PForm(BYTE u)IF u<9 THEN IF u=3 THEN u=4 FIELSEIF (u=13) OR (u=14) OR (u=15) TH!U}EN u=11ELSEIF (u=60) OR (u<23) OR((u>26) AND (u<48)) OR (u=55) OR (u=56) THEN u=9ELSEIF (u<27) OR (u=63) THEN u=11ELSE!V}IF (u<58) OR (u=72) OR (u=73) OR (u=127) THEN u=8ELSEIF u<60 THEN u=12ELSEIF (u=126) or (u=61) THEN u=13ELSEIF u<96 THE!W}N u=10ELSEIF (u=123) OR (u=125) THEN u=12ELSE u=11FIRETURN(u LSH 2)PROC Peer()BYTE POINTER p,op,g,gim=[8 0 0 08 !X}0 2 08 2 8 20 0 8 04 1 4 15 4 5 15 5 5 512 12 3 315 15 15 150 6 6 010 10 10 1015 0 0 1515 3 3 150 0 0 0]BYTE h,!Y}s1,s2,xp,ypIF md>1 THEN RETURN FIClDisplay()[169 0 141 704]g=Scop=scadr+803FOR yp=0 TO 31 DO p=op op==+160 FOR xp=0 !Z}TO 15 DO s1=PForm(g^) g==+1 s2=PForm(g^) g==+1 IF s2=0 THEN s2=12 FI FOR i=0 TO 3 DO p(i*40)=(gim(s1+i) LSH 4)%gim(s![}2+i) OD p==+1 ODODp=(rx+xx) RSH 1+(ry+yy)*160+scadr+803IF ((rx+xx)&1)=1 THEN s1=15ELSE s1=240FIDO FOR i=0 TO 3 !\}DO p(i*40)==!s1 ODUNTIL keyp#255 ODkeyp=255RETURNr+803IF ((rx+xx)&1)=1 THEN s1=15ELSE s1=240FIDO FOR i=0 TO 3 9ClrL2 LDA #0 LDY #39?RPCL2 STA L2,Y DEY BPL ?RPCL2 RTSWriteNA LDY #0 LDA (IR0),Y BNE ?DOWNA RTS?DOWNA sta IR4;len%^} INC IR4 LDA gsc sta Ir2 LDA gsc+1 sta Ir2+1 iny sty IR3+1;yhold?OLPWNA LDA #0 sta IR1+1 LDA (IR0),Y tax and #128%_} BEQ ?ILOK lda #255?ILOK sta IR3;invhold txa and #127 asl a rol IR1+1 asl a rol IR1+1 asl a rol IR1+1 adc #<57344%`} sta ?ILWNA+1 lda #>57344 adc IR1+1 sta ?ILWNA+2 LDY #0 LDX #0?ILWNA LDA $FFFF,x EOR IR3 STA (IR2),y clc lda IR2 %a}adc #40 sta IR2 bcc ?WNASK inc IR2+1?WNASK inx cpx #8 BNE ?ILWNA sec LDA IR2 Sbc #<319 sta IR2 lda IR2+1 sbc #>%b}319 sta IR2+1 inc IR3+1 ldy IR3+1 cpy IR4 bne ?OLPWNA rtsWrite JSR WriteNA DEC ir4 CLC lda gsc adc ir4 sta gsc%c} bcc ?WCC INC gsc+1?WCC RTSBlnk .SBYTE " "WriteCl JSR Write SEC LDA #17 SBC ir4 BCC ?ENWCL stA B%d}lnk LDA #blnk sta IR0+1 JMP Write?ENWCL RTSWriteL sec lda gsc sbc #1 sta Ir1 lda gsc+1 sbc %e}#0 sta Ir1+1 ldy #0 clc lda (Ir0),y tay adc gsc sta gsc bcc ?WLcc inc gsc+1?WLcc lda (Ir0),y sta (Ir1),y dey bne%f} ?WLcc rtsDMULT LDA #0 STA IR2 STA IR2+1?Dlp LDA IR0 ORA IR0+1 BNE ?DCN RTS?DCN LSR IR0+1 ROR IR0 BCC ?DNT CLC %g}LDA IR2 ADC IR1 STA IR2 LDA IR2+1 ADC IR1+1 STA IR2+1?DNT ASL IR1 ROL IR1+1 JMP ?Dlp NUMS .SBYTE 3+32,"000"BDIV L%q}f?B%DOS SYSB*)DUP SYSB"SBEG ACTB=uBEG SRCBxEDITUFN ACTB *GETBRIT ACTB 5GETFONT ACTB@HELP TXTBFINC ACTBG]INC SRCB@INCPE ACTB}INCPE SRCDA #0 sta Ir2;result lda Ir1;divisor sta Ir1+1;copy; BNE ?NOBDERR; JMP ERROR ;?NOBDERR?HRBD asl ir1 bcs ?bdsk sec l%r}da ir0 sbc ir1 BCS ?HRBD?bdsk ror ir1 SEC lda ir0 sbc ir1 bcc ?bdsk2 sta ir0?bdsk2 rol ir2 lda Ir1+1 cmp Ir1 BNE %s}?RNDBD RTS?RNDBD lsr ir1 jmp ?hrbdStrr STA Ir0 lda #100 sta Ir1 jsr BDIV lda Ir2 ORA #16 sta NUMS+1 lda #10 sta%t} Ir1 jsr BDiv lda Ir2 ORA #16 sta NUMS+2 LDA Ir0 ORA #16 sta NUMS+3 LDA #Nums STA IR0+1 RTS %u}WriteB JSR Strr JMP WriteWriteLB JSR Strr JMP WriteLWriteL2 LDA #L2 sta gsc+1 JSR ClrL2 JMP %v}WriteLGETK=62205;NOT 800 OSAskYN JSR WriteL2?DOAskYN JSR GetK CMP #' BEQ ?RET0AYN CMP #'N BEQ ?RET0AYN CMP #'n %w}BNE ?CHK1AYN?RET0AYN LDA #0 RTS?chk1ayn CMP #'y BEQ ?1y CMP #'Y BNE ?DOAskYN?1y LDA #1 RTS?Place .SBYTE 6+32,"Place%x} "?did .SBYTE 15+32," disk in drive "?atr .SBYTE 44," & type"PressRet LDA #?Place STA Ir0+%y}1 JSR WriteL2 lda Ir2 sta Ir0 lda Ir2+1 sta Ir0+1 JSR WriteL LDA #?did STA Ir0+1 JSR WriteL l%z}dy #0 lda sf BEQ ?PRE lda dvn sec sbc #32 bne ?PRa?PRE lda #'1-32?PRa STA (gsc),y inc gsc BNE ?PR inc gsc+1?PR ld%{}a #?atr sta Ir0+1 JSR WriteL?DOPR JSR GetK CMP #155 bne ?NPRCK lda #1 RTS?NPRCK CMP #' BNE ?D%|}OPR LDA #0 RTSPForm CMP #9 BCS ?NCHK0 CMP #3 BNE ?CNVOUT LDA #4?CNVOUT ASL A ASL A RTS?NCHK0 CMP #13 BEQ ?DOPF0%}} CMP #14 BEQ ?DOPF0 CMP #15 BNE ?NCHK1?DOPF0 LDA #11*4 RTS?NCHK1 CMP #60 BEQ ?DOPF1 CMP #56 BEQ ?DOPF1 CMP #55 BE%~}Q ?DOPF1 CMP #23 BCC ?DOPF1 CMP #48 BCS ?NCHK2 CMP #27 BCC ?NCHK2?DOPF1 LDA #9*4 RTS?NCHK2 CMP #63 BEQ ?DOPF0 CMP %}#27 BCC ?DOPF0 CMP #58 BCC ?DOPF2 CMP #72 BEQ ?DOPF2 CMP #73 BEQ ?DOPF2 CMP #127 BNE ?NCHK3?DOPF2 LDA #8*4 RTS?NC%}HK3 CMP #60 BCS ?NCHK4 LDA #12*4 RTS?NCHK4 CMP #126 BEQ ?DOPF3 CMP #61 BNE ?NCHK5?DOPF3 LDA #13*4 RTS?NCHK5 CMP #96%} BCS ?NCHK6 LDA #10*4 RTS?NCHK6 CMP #123 BEQ ?DOPF4 CMP #125 BNE ?NCHK7?DOPF4 LDA #12*4 RTS?NCHK7 LDA #11*4 RTSg%}im .BYTE 8,0,0,0 .BYTE 8,0,2,0 .BYTE 8,2,8,2 .BYTe 0,0,8,0 .BYTE 4,1,4,1 .BYTE 5,4,5,1 .BYTE 5,5,5,5 .BYTE 12,12,3,3 %}.BYTE 15,15,15,15 .BYTE 0,6,6,0 .BYTE 10,10,10,10 .BYTE 15,0,0,15 .BYTE 15,3,3,15 .BYTE 0,0,0,0?mask .BYTE 240,15Pee%}r LDA md CMP #2 BCC ?DoPeer RTS?DoPeer JSR ClDisplay LDA #0 sta 704 LDA #Sc STA Ir0+1 LDA #<[sc%}adr+803] STA IR1 LDA #>[scadr+803] STA IR1+1 LDA #31 STA j?PjLP clc lda IR1 sta IR2 ADC #160 sta IR1 LDA IR1+1 ST%}A IR2+1 ADC #0 STA IR1+1 LDA #15 STA i?PILP ldy #0 lda (IR0),y JSR PForm clc adc #gim adc #0 %}sta IR3+1 iny lda (IR0),y JSR PForm CMP #0 BNE ?PST LDA #12?PST clc adc #gim ADC #0 sta IR4+1%} clc lda Ir0 adc #2 sta Ir0 BCC ?Psk0 INC Ir0+1?Psk0 LDY #0?Plp0 lda (IR3),y asl a asl a asl a asl a ORA (Ir4),y%} sty IR5 tax lda m40L,y tay txa sta (Ir2),y inc IR5 ldy ir5 CPY #4 BNE ?Plp0 inc Ir2 BNE ?Psk1 INC Ir2+1?Psk1 D%}EC i BPL ?PILP DEC j BPL ?PJLP;p=(rx+xx) RSH 1+(ry+yy)*160+scadr+803 CLC LDA ry adc yy STA Ir0 LDA #0 STA Ir0+1 ST%}A Ir1+1 LDA #160 STA Ir1 JSR DMULT clc LDA #<[803+scadr] ADC IR2 STA Ir0 LDA #>[803+scadr] ADC IR2+1 STA IR0+1 lda%} rx adc xx tax and #1 tay txa lsr a clc adc Ir0 sta IR0 bcc ?PSK2 INC IR0+1?PSk2 lda ?mask,y STA j ldx #0 LDY%} #0?PDO LDA (Ir0),y EOR j STA (Ir0),y inx cpx #4 BNE ?PLD ldx #0?PLD LDY m40L,x LDA Strig0 BEQ ?StrigW LDA keyp C%}MP #255 BEQ ?PDO LDA #255 STA keyp RTS?StrigW JSR ClDisplay?wt LDA Strig0 BEQ ?wt RTS .LOCALWriteLN?LKln LDA $F%}FFF TAX?WLP LDA $FFFF,X?WLN STA $FFFF,X DEX BNE ?WLP CLC LDA ?WLN+1 ADC #40 STA ?WLN+1 LDA ?WLN+2 ADC #0 STA ?WLN%}+2 RTSEHelp LDA #5 BNE ?CHelpHelp LDA md?CHelp TAY LDA #0 STA dma STA dma2 STA pc0 STA pc1 TAX?Clrlp0 STA gr0%},X STA gr0+256,X STA gr0+512,X STA gr0+768,X INX BNE ?Clrlp0 LDA #DL0 STA 561 LDA #<[gr0+39] ST%}A ?WLN+1 LDA #>[gr0+39] STA ?WLN+2 LDX #39 LDA #128?tp STA gr0,X DEX BPL ?tp LDA ?mdlL,Y STA ?tp2+1 LDA ?mdlH,Y ST%}A ?tp2+2 LDX #6?tp2 LDA $FFFF,X STA gr0+8,X DEX BPL ?tp2 LDX #8?tp3 LDA ?mdhlp,X STA gr0+16,X DEX BPL ?tp3?gtIr1 %}LDA ?mdPtL,Y STA ??Hlp+1 LDA ?mdPtH,Y STA ??Hlp+2 LDY #0??Hlp LDA $FFFF,Y CMP #255 BEQ ?Stop CMP #254 BNE ?Hcnt LDY%} #6 BNE ?gtIr1?Hcnt TAX LDA ?LnL,X STA ?WLP+1 STA ?LKln+1 LDA ?LnH,X STA ?WLP+2 STA ?LKln+2 JSR WriteLN INY JMP ??%}Hlp?Stop LDA #42 STA dma LDA #255?wks CMP keyp BNE ?nwks LDX Strig0 BNE ?wks?nwks STA keyp LDA #0 STA dma STA dm%}a2?wt LDA Strig0 BEQ ?wt LDA #DL8 STA 561 LDA #42 sta dma RTS?mdPtL .BYTE ?md0,>?md1,>?md2,>?md3 .BYTE >?md4,>?md5,>?md6?mdhlp .SBYTE ""?mdl0 .%}SBYTE ""?mdl1 .SBYTE ""?mdl2 .SBYTE ""?mdl3 .SBYTE ""?mdl4 .SBYTE ""?mdl5 .SBYTE "%}"?mdlL .BYTE ?mdl0,>?mdl1,>?mdl2,>?mdl3 .BYTE >?mdl4,>?m%}dl5?md0 .BYTE 0,1,2,3,4,5,254?md1 .BYTE 0,1,2,4,7,8,9,10,6,5,254?md2 .BYTE 0,11,254?md3 .BYTE 4,7,8,9,6,5,254?md4 .BYTE%} 4,7,8,9,12,13,6,5,254?md5 .BYTE 14,15,16,17,18,19,255?md6 .BYTE 20,21,22,23,24,25,26,27,28,29,30,31,255?l0 .SBYTE 32+23,%}":Peer at gem(Overview)"?l1 .SBYTE 32+39,":Convert visible screen to Screen mode"?l2 .SBYTE 32+18,":View mode toggle"?l%}3 .SBYTE 32+34,"shift : by 16 (world only)"?l4 .SBYTE 32+18,"^:Textmode toggle"?l5 .SBYTE 32+15,":icon boxes"%}?l6 .SBYTE 32+10,""?l7 .SBYTE 32+19,":Show items toggle"?l8 .SBYTE 32+10,"Show mode:"?l9 .SBYTE 32+17,": Sh%}own items"?l10 .SBYTE 32+32,"spacebar/trigger:Enter Edit mode"?l11 .SBYTE 32+20,": dungeon levels"?l12 .SBYTE 32+39,"%}: Trigger types(trigger/overlay1/2)"?l13 .SBYTE 32+38,":Rotate player entry direction (NESW)"?l14 .SBYTE 32+32,"spaceba%}r/trigger:Leave Edit Mode"?l15 .SBYTE 32+37,":Del current item and pull others up"?l16 .SBYTE 32+37,":In val mode:calcula%}te logical RepIc"?l17 .SBYTE 32+30,"/joystick: one selection"?l18 .SBYTE 32+32,"/joystick: select -1 or +1"?l1%}9 .SBYTE 32+35,"/joystick+trigger: -10 or +10"?l20 .SBYTE 32+25,"۬:icon # -10,-1,+1,+10"?l21 .SBYTE 32+15,"^:Quit%} Program"?l22 .SBYTE 32+25,"^:Load current highlight"?l23 .SBYTE 32+28,"^:Save as current highlight"?l24 .SBYTE 32+21,"^%}:File/Sector toggle"?l25 .SBYTE 32+27,"spacebar/trigger:Place icon"?l26 .SBYTE 32+39,"/joystick: one square on scr%}een"?l27 .SBYTE 32+36,"tab:Highlight next item w/shift:prev"?l28 .SBYTE 32+40,":Highlight -1 or +1 w/shift:-10 or +10"?l%}29 .SBYTE 32+24,":Fill with current icon"?l30 .SBYTE 32+26,":File mode drive number"?l31 .SBYTE 32+25,"^ means press co%}ntrol key"?LnL .BYTE ?l0,>%}?l1,>?l2,>?l3,>?l4,>?l5,>?l6,>?l7 .BYTE >?l8,>?l9,>?l10,>?l11,>?l12,>?l13,>?l14 .BYTE >?l15,>?l16,>?l17,>?l18,>?l19,>?l20 %}.BYTE >?l21,>?l22,>?l23,>?l24,>?l25,>?l26 .BYTE >?l27,>?l28,>?l29,>?l30,>?l31 .LOCAL?l15,>?l16,>?l17,>?l18,>?l19,>?l20 $Y;disabled because of memory shortage;Pe stands for people!PROC ShowPe();;BYTE POINTER psc;;IF md=1 THEN;; i=31;; DO;)}; IF Pe(i) THEN;; psc=sc+Pe(i+32)+Pe(i+64)*32;; UnPe(i)=psc^;; CasBuf(i)=psc;; ELSE;; EXIT;; FI;; i==-1;;)} UNTIL i=255 OD;; FOR i=i+1 TO 31 DO;; psc=CasBuf(i);; psc^=Pe(i);; OD;;ELSEIF md=4 THEN;; i=15;; DO;; IF Pe(i+16))}#0 THEN;; psc=sc+Pe(i+32)+Pe(i+48)*32;; UnPe(i)=psc^;; CasBuf(i)=psc;; FI;; i==-1;; UNTIL i=255 OD;; FOR i=0 T)}O 15 DO;; IF Pe(i+16)#0 THEN;; psc=CasBuf(i);; psc^=Pe(i+16);; FI;; OD;;FIRETURNPROC HidePe();;BYTE POINTER p)}sc;;IF md=1 THEN;; i=31;; DO;; IF Pe(i) THEN;; psc=sc+Pe(i+32)+Pe(i+64)*32;; psc^=UnPe(i);; ELSE;; EXIT;; F)}I;; i==-1;; UNTIL i=255 OD;;ELSEIF md=4 THEN;; FOR i=0 TO 15 DO;; IF Pe(i+16)#0 THEN;; psc=sc+Pe(i+32)+Pe(i+48)*32)};; psc^=UnPe(i);; FI;; OD;;FIRETURN;;BYTE FUNC Form(BYTE in);;IF in<32 THEN RETURN(in);;ELSEIF in<48 THEN RETURN(i)}n&254);;ELSEIF in<80 THEN RETURN(in);;ELSEIF in<96 THEN RETURN(in&254);;ELSEIF in<128 THEN RETURN(in);;ELSEIF in<144 THEN)} RETURN(in&254);;ELSE RETURN(in&252) FI;mobilityPROC WrMob();;i=Pe(per+192);;IF i=255 THEN;; WriteL("Aggr ");;ELSEIF )}i=128 THEN;; WriteL("Attr ");;ELSEIF i=1 THEN;; WriteL("Yes ");;ELSEIF i#0 THEN;; WriteLB(i) gsc==+2;;ELSE;; WriteL(")}No ");;FIRETURN;modify peoplePROC ModPe(BYTE am);;IF sk=0 THEN;; icn==+am Pe(per+96)=icn;; gsc=L2+11 WriteLB(icn);)};ELSEIF sk=1 THEN;; IF (am&128)=128 THEN;; am=Pe(per+192);; IF am=0 THEN am=1;; ELSEIF am=1 THEN am=128;; ELSEIF am=)}128 THEN am=255;; ELSEIF am=255 THEN am=0;; FI;; ELSE;; am=Pe(per+192);; IF am=255 THEN am=128;; ELSEIF am=128 THE)}N am=1;; ELSEIF am=1 THEN am=0;; ELSEIF am=0 THEN am=255;; FI;; FI;; Pe(per+192)=am;; gsc=L2+19 WrMob();;ELSE;sk=2)};; Pe(per+224)==+am;; IF Pe(per+224)>16 THEN;; IF Pe(per+224)<230 THEN;; Pe(per+224)=0;; ELSE;; Pe(per+224)=16;; )} FI;; FI;; gsc=L2+29 WriteLB(Pe(per+224));;FIRETURN;show a person's statisticsPROC ShowPer();;IF md=1 THEN;; WriteL2)}("#");; WriteLB(per) gsc==+1;; WriteL("RepIc:");; WriteLB(Pe(per+96)) gsc==+1;; Pe(per)=icn;; pp=Sc+(yy+ry)*32+rx+xx;; )}UnPe(per)=pp^;; Pe(per+32)=rx+xx;; Pe(per+64)=ry+yy;; Pe(per+128)=rx+xx;; Pe(per+160)=ry+yy;; WriteL("Mob:");; WrMob())};; WriteL("Spch#");; WriteLB(Pe(per+224));;ELSEIF md=3 THEN;; IF Ptyp THEN;; WriteL2("Monster #");; Pe(per+64)=rx;; )}Pe(per+80)=ry;; ELSE;; WriteL2("Player #");; Pe(per+96)=rx;; Pe(per+104)=ry;; FI;; WriteLB(per);;ELSEIF md=4 THEN)};; IF Ptyp=0 THEN;; WriteL2("Player ");; pp=gsc pp^=SDir(s_dir) pp==+1 pp^='#-32;; gsc==+2;; Pe(per+s_dir LSH 4+64)=r)}x;; Pe(per+s_dir LSH 4+72)=ry;; ELSEIF Ptyp=1 THEN;; WriteL2("Monster #");; Pe(per+16)=icn;; Pe(per+32)=rx;; Pe(pe)}r+48)=ry;; pp=Sc+(yy+ry)*32+rx+xx;; UnPe(per)=pp^;; ELSEIF Ptyp=2 THEN;; Pe(per LSH 2)=icn;; IF Ttyp=0 THEN;; Wri)}teL2("Trigger #");; Pe(per LSH 2+1)=rx LSH 4+ry;; ELSEIF Ttyp=1 THEN;; WriteL2("Overlay1#");; Pe(per LSH 2+2)=rx L)}SH 4+ry;; ELSEIF Ttyp=2 THEN;; WriteL2("Overlay2#");; Pe(per LSH 2+3)=rx LSH 4+ry;; FI;; FI;; WriteLB(per);;FIR)}ETURN;select a personPROC SelPer();;IF md=1 THEN;; rx=Pe(per+32);; ry=Pe(per+64);; pp=Sc+ry*32+rx;; IF Pe(per)<>0 THE)}N;; pp^=UnPe(per);; FI;; icn=Pe(per);; IF icn=0 THEN;; IF per THEN;; Pe(per-1)=0;; FI;; FI;; IF ry<6 THEN;; y)}y=0;; ELSEIF ry<26 THEN;; yy=ry-5 ry=5;; ELSE;; yy=21 ry==-yy;; FI;; IF rx<6 THEN;; xx=0;; ELSEIF rx<26 THEN;; x)}x=rx-5 rx=5;; ELSE;; xx=21 rx==-xx;; FI;;ELSEIF md=3 THEN;; IF Ptyp THEN;; rx=Pe(per+64);; ry=Pe(Per+80);; ELSE;;)} rx=Pe(per+96);; ry=Pe(per+104);; FI;;ELSEIF md=4 THEN;; IF Ptyp=0 THEN;; rx=Pe(per+s_dir LSH 4+64);; ry=Pe(per+s_d)}ir LSH 4+72);; ELSEIF Ptyp=1 THEN;; rx=Pe(per+32);; ry=Pe(per+48);; pp=Sc+ry*32+rx;; IF Pe(per+16)#0 THEN;; pp^=U)}nPe(per);; FI;; icn=Pe(per+16);; ELSEIF Ptyp=2 THEN;; icn=Pe(per LSH 2);; ry=Pe(per LSH 2+1+Ttyp);; rx=ry RSH 4;;)} ry==&15;; FI;;FIRETURN;draw player-missle 1:selection markerPROC Drawp1();;BYTE ARRAY tps1=[3 1 3],;;tp1x=[90 122 1)}62],;;tv1=[240 255 240];;ps1=tps1(sk);;p1x=tp1x(sk);;SetBlock(1664+108,4,tv1(sk))RETURNPROC EditPe();;BYTE acc,k;;Un)}Pe(per)=pp^;;pp^=icn;;Zero(1664,128);;sk=0 pc1=16;;Drawp1();;icn=Pe(per+96);;DO UNTIL Strig0 OD;;DO;; Display(xx,yy))};; DO;; acc==+1;; IF acc=0 THEN;; Display(xx,yy);; IF pc1=16 THEN;; pc1=240;; ELSE;; pc1==-16;; FI;;)} FI;; UNTIL ((keyp#255) OR (Stick0#15)) OR (Strig0=0) OD;; IF keyp#255 THEN;; k=keyp&63;; IF (k#60) AND (k#39) THEN;;)} k=GetD(7);; IF k='- THEN;; ModPe(1);; ELSEIF k='= THEN;; ModPe(255);; ELSEIF k='| THEN;; ModPe(246);)}; ELSEIF k='_ THEN;; ModPe(10);; ELSEIF (k=' ) OR (k=') THEN;; EXIT;; ELSEIF k='* THEN;; sk==+1 IF sk=3 )}THEN sk=0 FI;; Drawp1();; ELSEIF k='- THEN;; sk==-1 IF sk=255 THEN sk=2 FI;; Drawp1();; ELSEIF k='f THEN;;)} IF sk=0 THEN;; icn=Form(Pe(per));; Pe(per+96)=icn;; gsc=L2+11 WriteLB(icn);; FI;; ELSEIF k=' THEN)};; HidePe();; IF per#0 THEN;; i=per;; DO;; Pe(i)=Pe(i-1);; Pe(i+32)=Pe(i-1+32);; Pe(i+64)=)}Pe(i-1+64);; Pe(i+96)=Pe(i-1+96);; Pe(i+128)=Pe(i-1+128);; Pe(i+160)=Pe(i-1+160);; Pe(i+192)=Pe(i-1+1)}92);; Pe(i+224)=Pe(i-1+224);; i==-1;; UNTIL i=0 OD;; FI;; i=0;; DO;; Pe(i)=0 i==+32;; U)}NTIL i=0 OD;; ShowPe();; EXIT;; FI;; ELSE;; keyp=255;; FI;; ELSEIF Stick0#15 THEN;; k=Stick0;; IF k=13)} THEN;; ModPe(246+9*Strig0);; ELSEIF k=14 THEN;; ModPE(10-9*Strig0);; ELSEIF k=7 THEN;; sk==+1 IF sk=3 THEN sk=0)} FI;; Drawp1();; ELSEIF k=11 THEN;; sk==-1 IF sk=255 THEN sk=2 FI;; Drawp1();; FI;; ELSEIF Strig0=0 THEN;; EX)}IT;; FI;;OD;;p1x=0;;SelPer()RETURNMODULE; Dungeon stuff;;BYTE ARRAY db;484 byte buf;;BYTE ix,iy,ax,ay;;CARD dngaP)}ROC DInd_=*();;[57344 up_+$FFF8 dn_+$FFF8 ud_+$FFF8;;57376 $FF80 58112;'`;;58016 57760 57648 57840 alt_+$FFF8;;er_+$FFF8 )}er_+$FFF8 sd_+$FFF8 wa_+$FFF8]PROC APlot(BYTE x,y,v);;BYTE i;;BYTE POINTER f,t;;CARD POINTER ff;;IF v=0 THEN RETURN FI)};;v==&240;when  not needed;;v==RSH 3;RSH 4 LSH 1;;ff=DInd_+v;;f=ff^;;t=y*320+x+scadr;;FOR i=0 TO 7 DO;; t(i*40)=f(i);)};ODRETURN;;BYTE FUNC PPlot();;BYTE xp,yp,mx,my,amx,amy,cnt,t;;BYTE POINTER p,q;;BYTE ARRAY dr3=[$FF 0 1];;cnt=0;;q=db)}+ax+ay*22;;t=q^;;IF t#2 THEN;; FOR yp=0 TO 2 DO;; FOR xp=0 TO 2 DO;; IF (xp=1) AND (yp=1) THEN;;; ELSE;; amx=a)}x+dr3(xp);; amy=ay+dr3(yp);; IF (amx<22) AND (amy<22) THEN;; q=db+amx+amy*22;; IF t=0 THEN;; mx=(amx-)}3+rx)&7;; my=(amy-3+ry)&7;; p=dnga+mx+my*8;; IF q^=0 THEN;; APlot(amx,amy,p^);; FI;; IF )}p^=240 THEN;; q^=2;; FI;; FI;; IF (yp#xp) AND ((xp=1) OR (yp=1)) THEN;; IF q^=0 THEN;; cn)}t==+1;; FI;; FI;; FI;; FI;; OD;; OD;;FI;;q=db+ax+ay*22;;IF cnt>1 THEN q^=1;;ELSE q^=2 FI;;RETURN(cn)}t)PROC DPeer();;BYTE n,amx,amy;;BYTE POINTER p;;BYTE ARRAY dx=[0 $FF 1 0],dy=[$FF 0 0 1];;CARD c;;db=Sc+512;Dng mode o)}nly!-;;Zero(db,484);;pc0=0;;ClDisplay();;dnga=Sc+xx*64;;ax=11 ay=11;;DO;; IF PPlot() THEN;; FOR n=0 TO 3 DO;; amx)}=ax+dx(n);; amy=ay+dy(n);; IF (amx>21) OR (amy>21) THEN;;; ELSE;; p=db+amx+amy*22;; IF p^=0 THEN EXIT FI;; )} FI;; OD;; ax=amx;; ay=amy;; ELSE;; p=db;; FOR c=0 TO 483 DO;; IF p^=1 THEN;; ay=c/22 ax=c MOD 22 EXIT;; )} FI;; p==+1;; OD;; IF c=484 THEN EXIT FI;; FI;;OD;;APlot(11,11,96);;DO UNTIL keyp#255 OD keyp=255;;ClDisplay();)};pc0=16RETURN;; OD;; IF c=484 THEN EXIT FI;; FI;;OD;;APlot(11,11,96);;DO UNTIL keyp#255 OD keyp=255;;ClDisplay();( .LOCALBPe LDA #Pe STA IR0+1 LDA #<256 STA IR1 LDA #>256 STA IR1+1 RTStwns .BYTE "Dn:TOWNE.000"-},155RWTowne LDA sf BEQ ?ELT LDA #twns STA IR7+1 LDA cnt+2 JSR DoOpen LDA #-}Sc STA IR0+1 LDA #<1024 STA IR1 LDA #>1024 STA IR1+1 LDA Cmd CMP #'R BNE ?ELT@F BGet 2 JSR BPe BGet 2 JMP ?@Cl?E-}LT@F BPut 2 JSR BPe BPut 2?@Cl Close 2 RTS?ELT LDA cnt+2 CMP #17 BCC ?NORT RTS?NORT LDA #Sc -}STA sc_+1 LDA #8 STA IR7 LDA cnt+2 CMP #16 BNE ??ELSE LDA #<555 STA Sec LDA #>555 STA Sec+1 JMP ??FI??ELSE ASL A;-}*2 STA Sec ASL A ASL A;*8 ADC Sec;*10 ADC #<360 STA Sec LDA #>360 ADC #0 STA Sec+1??FI JSR RWSec LDA #Pe STA sc_+1 LDA #2 STA IR7 JSR RWSec RTSReadTowne JSR RWTowne LDA #0 STA mx STA my LDA #11 STA xx STA-} yy LDA #5 STA rx STA ry RTSWriteTowne JMP RWTowne .LOCALScsM .BYTE 'X,'B,'X,'T,'X,'D,'RComRWScF LDA ScsM,Y STA-} Scs+3 LDA #Scs STA IR7+1 LDA Cnt,y JSR DoOpen LDA #Pe STA IR0+1 LDA #128 ST-}A IR1 LDA #0 STA IR1+1 RTSRdSc LDA sf BNE ?sf:1 LDA cnt,y CMP cmax,y BEQ ?sf:0 BCC ?sf:0 RTS?sf:1 JSR ComRWScF-} BGet 2 LDA #<[Sc+768] STA sc_ STA IR0 LDA #>[Sc+768] STA sc_+1 STA IR0+1 LDA #128 STA IR1 LDA #0 STA IR1+1 BGet 2-} Close 2 JMP ?sfFI?sf:0 LDA #Pe STA sc_+1 JSR Io INC Sec BNE ??: INC Sec+1??: LDA #<[Sc+768] S-}TA sc_ LDA #>[Sc+768] STA sc_+1 JSR Io?sfFI LDA #Sc STA Ir0+1 LDA sc_ STA IR1 LDA sc_+1 STA IR1-}+1 LDA #11 STA i?Rlp JSR Move11 JSR IIR@3211 DEC i BNE ?Rlp LDA #0 STA mx STA my STA xx STA yy LDA #5 STA rx S-}TA ry RTSWrSc LDA sf BNE ?sf@1 LDA cnt,y CMP cmax,y BEQ ?sf@0 BCC ?sf@0 RTS?sf@1 JSR ComRWScF BPut 2 LDA #Sc STA IR0+1 LDA #11 STA IR1 STA i LDA #0 STA IR1+1?l@ BPut 2 JSR IIR0@32 DEC i BNE ?l@ Close 2 R-}TS?sf@0 LDA #Pe STA sc_+1 JSR Io INC Sec BNE ?NiS INC Sec+1?NiS LDA #<[Sc+768] STA sc_ STA IR0-} LDA #>[Sc+768] STA sc_+1 STA IR0+1 LDA #Sc STA IR1+1 LDA #11 STA i?DoWs JSR Move11 JSR IIR@113-}2 DEC i BNE ?DOWs JSR Io RTSRWScreen TAY LDA cnt,y CMP #13 BNE ?E14 LDA #<584 STA Sec LDA #>584 STA Sec+1 BNE .}???FI?E14 CMP #14 BNE ?E LDA #<681 STA Sec LDA #>681 STA Sec+1 BNE ???FI?E ASL A CLC ADC #<529 STA Sec LDA #>529.} ADC #0 STA Sec+1???FI LDA Cmd CMP #'R BEQ ?DoRd JMP WrSc?DoRd JSR RdSc LDY #111?Dolk LDA Pe,Y CMP #11 BCS ?GoCL.}Pe DEY CPY #63 BNE ?DOlk RTS?GoCLPe JMP CLPeRWDScr TAY LDA cnt,Y STX ir6 CPX #1 BNE ?RWDEt CMP #7 BNE ??rif LD.}A #<681 STA Sec LDA #>681 STA Sec+1 BNE ??FIr??rif ASL A CLC ADC #<657 STA Sec LDA #>657 ADC #0 STA Sec+1 BNE ??.}FIr?RWDEt LDX #0 STX Sec+1 ASL A ROL SEC+1 ADC #17 STA SEC LDA SEC+1 ADC #0 STA SEC+1??FIr LDA Cmd CMP #'R BNE .}??WDELSE JSR RdSc LDX IR6 BNE ?HERE LDX #127?DRl LDA Pe,X CMP #11 BCC ?DDEX JMP CLPe?DDEX DEX CPX #31 BNE ?DRl R.}TS?HERE LDX #111?DRlp LDA Pe,X CMP #11 BCC ?DDEX2 JMP CLPe?DDEX2 DEX CPX #63 BNE ?DRlp RTS??WDELSE JMP WrScdng.}s .BYTE "Dn:DUNGEON.000",155RWDng LDA cnt+4 CMP cmax+4 BEQ ?NRT BCC ?NRT LDA sf BNE ?NRT RTS?NRT LDA sf BEQ ??eq0.} LDA #dngs STA IR7+1 LDA cnt+4 JSR DoOpen LDA #Sc STA IR0+1 LDA #<512 STA I. }R1 LDA #>512 STA IR1+1 LDA Cmd CMP #'R BNE ?Pt BGet 2 JMP ?Cl?pt BPut 2?Cl Close 2 JMP ?RW??eq0 LDA #Sc STA sc_+1 LDA cnt+4 ASL A ASL A ADC #<625 STA Sec LDA #>625 ADC #0 STA Sec+1 LDA #4 STA IR7 JSR RWSec. }?RW LDA Cmd CMP #'R BNE ?RTS LDA #0 STA rx STA ry STA xx LDA #255 STA ox STA oy?RTS RTSCasBufL=$400CasBufH=$42. }0ClcSc LDY #0 STY IR0+1 ASL A ASL A ASL A ASL A ROL IR0+1 ASL A ROL IR0+1 ORA i CLC ADC #Sc. } ADC IR0+1 STA IR0+1 RTSShowPe LDA md CMP #1 BNE ?SP4 LDX #31?RHD1 LDA Pe,X BEQ ?ERHD1 LDA Pe+32,X STA i LDA P.}e+64,X JSR ClcSc LDA (IR0),y STA UnPe,X LDA IR0 STA CasBufL,X LDA IR0+1 STA CasBufH,X DEX BPL ?RHD1?ERHD1 INX CPX.} #32 BEQ ??t LDA CasBufL,X STA Ir0 LDA CasBufH,X STA Ir0+1 LDA Pe,X STA (IR0),Y JMP ?ERHD1??t RTS?SP4 CMP #4 BNE .}??t LDX #15???r0 LDA Pe+16,X BEQ ?DEX LDA Pe+32,X STA i LDA Pe+48,X JSR ClcSc LDA (Ir0),Y STA UnPe,X LDA IR0 STA .}CasBufL,X LDA IR0+1 STA CasBufH,X?DEX DEX BPL ???r0 LDX #15???r1 LDA Pe+16,X BEQ ?DEX2 LDA CasBufL,X STA IR0 LDA C.}asBufH,x STA IR0+1 LDA Pe+16,X STA (Ir0),Y?DEX2 DEX BPL ???r1 RTSHidePe LDA md CMP #1 BNE ??Ez LDX #31??HPl0 LD.}A Pe,X BEQ ??RTS LDA Pe+32,X STA i LDA Pe+64,X JSR ClcSc LDA UnPe,X STA (Ir0),Y DEX BPL ??HPl0??RTS RTS??Ez CMP #.}4 BNE ??RTS LDX #15??HPl1 LDA Pe+16,X BEQ ??nRTS LDA Pe+32,X STA i LDA Pe+48,X JSR ClcSc LDA UnPe,X STA (IR0),Y??.}nRTS DEX BPL ??HPl1 RTSForm CMP #144 BCC ?n254 AND #252 RTS?n254 CMP #132 BCS ?y1 CMP #96 BCS ?n0 CMP #80 BCS .}?y1 CMP #48 BCS ?n0 CMP #32 BCC ?n0?y1 AND #254?n0 RTSAggr .SBYTE 37,"Aggr "Attr .SBYTE 37,"Attr "Yess .SBYTE 37,"Y.}es "Nos .SBYTE 37,"No "WrMob LDX per LDA Pe+192,X CMP #255 BNE ?@128 LDA #Aggr STA Ir0+1 .}JMP WriteL?@128 CMP #128 BNE ?@1 LDA #Attr STA IR0+1 JMP WriteL?@1 CMP #1 BNE ?@0 LDA #Yess STA IR0+1 JMP WriteL?@0 CMP #0 BEQ ?DoNo JSR WriteLB INC gsc INC gsc RTS?DoNo LDA #Nos STA IR0+1 JMP WriteLModPe STA Ir0 LDA sk BNE ?sk1 CLC lda icn ADC Ir0 sta icn LDX per STA Pe+96,X.} LDX #<[L2+11] STX gsc LDX #>[L2+11] STX gsc+1 JMP WriteLB?sk1 CMP #1 BNE ?sk2 LDX per LDA Ir0 AND #128 BEQ ?ELam.} LDA Pe+192,X BNE ??E1 LDA #1 BNE ?FIam??E1 CMP #1 BNE ??E128 LDA #128 BNE ?FIam??E128 CMP #128 BNE ??E255 LDA #25.}5 BNE ?FIam??E255 LDA #0 BEQ ?FIam?ELam LDX per LDA Pe+192,X BNE ?I1 LDA #255 BNE ?FIam?I1 CMP #1 BNE ?I128 LDA #.}0 BEQ ?FIam?I128 CMP #128 BNE ?I255 LDA #1 BNE ?FIam?I255 LDA #128?FIam STA Pe+192,X LDA #<[L2+19] STA gsc LDA #>[.}L2+19] STA gsc+1 JMP WrMob?sk2 LDX per CLC LDA Ir0 ADC Pe+224,X CMP #17 BCC ??OK CMP #230 BCC ??w0 LDA #16 BNE ?. }?OK??w0 LDA #0??OK STA Pe+224,X LDA #<[L2+29] STA gsc LDA #>[L2+29] STA gsc+1 LDA Pe+224,X JMP WriteLB .LOCALComb.!} LDA per ASL A ASL A TAX LDA rx ASL A ASL A ASL A ASL A ORA ry RTSpnd .SBYTE 33,"#"RepIc .SBYTE 38,"RepIc:"Mob."} .SBYTE 36,"Mob:"spch .SBYTE 37,"Spch#"Monst .SBYTE 41,"Monster #"plyer .SBYTE 41,"Player #"player .SBYTE 39,"Player "T.#}rigger .SBYTE 41,"Trigger #"Overlay .SBYTE 41,"Overlayn#"Gover STA Overlay+8 LDA #Overlay STA .$}IR0+1 JSR WriteL2 JMP CombShowPer LDA md CMP #1 BNE ??3 LDA #pnd STA IR0+1 JSR WriteL2 LDA pe.%}r JSR WriteLB(per) INC gsc LDA #RepIc STA IR0+1 JSR WriteL LDX per LDA Pe+96,X JSR WriteLB IN.&}C gsc LDX per LDA icn STA Pe,X CLC LDA xx ADC rx STA Pe+32,X STA Pe+128,X STA i CLC LDA yy ADC ry STA Pe+64,X S.'}TA Pe+160,X JSR ClcSc LDA (IR0),Y STA UnPe,X LDA #Mob STA IR0+1 JSR WriteL JSR WrMob LDA #Spch STA IR0+1 JSR WriteL LDX per LDA Pe+224,X JMP WriteLB??3 CMP #3 BNE ??4 LDA Ptyp BEQ ??p0 LDA.)} #Monst STA IR0+1 JSR WriteL2 LDX per LDA rx STA Pe+64,X LDA ry STA Pe+80,X JMP ??PRTS??p0 L.*}DA #plyer STA IR0+1 JSR WriteL2 LDX per LDA rx STA Pe+96,X LDA ry STA Pe+104,X??PRTS LDA per.+} JSR WriteLB??RTS RTS??4 CMP #4 BNE ??RTS LDA Ptyp BNE ?Tp1 LDA #Player STA IR0+1 JSR WriteL.,}2 LDY #0 LDX s_dir LDA SDir,X STA (gsc),Y INC gsc LDA #'#-32 STA (gsc),Y INC gsc TXA ASL A ASL A ASL A ASL A AD.-}C per TAX LDA rx STA Pe+64,X LDA ry STA Pe+72,X JMP ?FIpper?Tp1 CMP #1 BNE ?Tp2 LDA #Monst ..}STA IR0+1 JSR WriteL2 LDX per LDA icn STA Pe+16,X LDA rx STA i STA Pe+32,X LDA ry STA Pe+48,X JSR ClcSc LDA (Ir0),./}Y STA UnPe,X JMP ?FIpper?Tp2 CMP #2 BNE ?FIpper LDA per ASL A ASL A TAX LDA icn STA Pe,X LDA Ttyp BNE ?T1 LDA #.0}Trigger STA IR0+1 JSR WriteL2 JSR Comb STA Pe+1,X JMP ?FIpper?T1 CMP #1 BNE ?T2 LDA #'1-32.1} JSR Gover STA Pe+2,X JMP ?FIpper?T2 CMP #2 BNE ?FIpper LDA #'2-32 JSR Gover STA Pe+3,X?FIpper LDA per JMP WriteLB.2} .LOCALFWnd CMP #6 BCS ?l26 LDX #0 RTS?l26 CMP #26 BCS ?lse SEC SBC #5 TAX LDA #5 RTS?lse SEC SBC #21 LDX.3} #21 RTSSelPer LDA md CMP #1 BNE ?ELSE3 LDX per LDA Pe+32,X STA rx STA i LDA Pe+64,X STA ry JSR ClcSc LDA Pe,X.4} BEQ ?NUN LDA UnPe,X STA (IR0),y?NUN LDA Pe,X STA icn BNE ?NEQ0 LDA per BEQ ?NEQ0 DEX LDA #0 STA Pe,X?NEQ0 LDA r.5}y JSR FWnd STA ry STX yy LDA rx JSR FWnd STA rx STX xx RTS?ELSE3 CMP #3 BNE ?ELSE4 LDA Ptyp BEQ ?eq0 LDX per L.6}DA Pe+64,X STA rx LDA Pe+80,X STA ry RTS?eq0 LDX per LDA Pe+96,X STA rx LDA Pe+104,X STA ry?? RTS?ELSE4 CMP #4 .7}BNE ?? LDA Ptyp BNE ?ELSEp1 LDA s_dir ASL A ASL A ASL A ASL A ADC per TAX LDA Pe+64,X STA rx LDA Pe+72,X STA ry.8} RTS?ELSEp1 CMP #1 BNE ?ELSEp2 LDX per LDA Pe+32,X STA rx STA i LDA Pe+48,X STA ry JSR ClcSc LDA Pe+16,X BEQ ??sk.9} LDA UnPe,X STA (IR0),Y??sk LDA Pe+16,X STA icn RTS?ELSEp2 CMP #2 BNE ??RTS? LDA per ASL A ASL A TAX LDA Pe,X S.:}TA icn TXA CLC ADC Ttyp TAX LDA Pe+1,X JSR SPLT STA rx STY ry??RTS? RTS .LOCALtps1 .BYTE 3,1,3tp1x .BYTE 90,122.;},162tv1 .BYTE 240,255,240Drawp1 LDY sk LDA tps1,Y STA ps1 LDA tp1x,Y STA p1x LDA tv1,Y LDY #3??dp1 STA 1664+104,Y.<} DEY BPL ??dp1 RTSEditPe LDY #0 LDA (pp),y LDX per STA UnPe,X LDA icn STA (pp),Y LDA #0 LDY #127??ack STA 1664,Y.=} DEY BPL ??ack STA sk LDA #16 STA pc1 JSR Drawp1 LDA icn BNE ?str STA Pe+96,X?str LDA Strig0 BEQ ?str?OLOOP LDA .>}xx STA i LDA yy STA j JSR Display?KLOOP INC mlacc BNE ??FIacc LDA xx STA i LDA yy STA j JSR Display SEC LDA pc1.?} SBC #16 BNE ?pc1 LDA #240?pc1 STA pc1??FIacc LDA keyp CMP #255 BNE ?oK LDA Stick0 CMP #15 BNE ?oJs LDA Strig0 B.@}NE ?KLOOP JMP ?EXIT?oJs JMP ?Js?oK LDA keyp CMP #192 BCS ?k@255 AND #63 CMP #60 BEQ ?k@255 CMP #39 BNE ?kn@255?k@.A}255 LDA #255 STA keyp JMP ?OLOOP?kn@255 LDA #0 STA 702 STA 694 JSR GetK CMP #'- BNE ?ELSE1 LDA #1?mo JSR ModPe J.B}MP ?OLOOP?ELSE1 CMP #'= BNE ?ELSE2 LDA #255 BNE ?mo?ELSE2 CMP #'| BNE ?ELSE3 LDA #246 BNE ?mo?ELSE3 CMP #'_ BNE .C}?ELSE4 LDA #10 bne ?mo?ELSE4 CMP #' BEQ ?JEXIT CMP #' BNE ?ELSE5?JEXIT JMP ?EXIT?ELSE5 CMP #'H BEQ ?gHelp CMP #.D}'h BNE ?gast?gHelp JSR EHelp JMP ?OLOOP?gast CMP #'* BNE ?ELSE6 INC sk LDA sk CMP #3 BNE ??ne LDA #0 STA sk??ne.E} JSR Drawp1 JMP ?OLOOP?ELSE6 CMP #'+ BNE ?ELSE7 DEC sk LDA sk BPL ??ne LDA #2 STA sk BNE ??ne?ELSE7 CMP #'f BNE .F}?ELSE8 LDA sk BNE ?olp LDX per LDA Pe,X JSR Form STA icn STA Pe+96,X LDA #<[L2+11] STA gsc LDA #>[L2+11] STA gsc+1.G} LDA icn JSR WriteLB?olp JMP ?OLOOP?ELSE8 CMP #' BNE ?olp JSR HidePe LDX per BEQ ?Rpe1?Rpe LDA Pe-1,X STA Pe,X T.H}XA CLC ADC #32 TAX BCC ?Rpe DEX BNE ?Rpe?Rpe1 LDA #0 STA Pe,X TXA CLC ADC #32 TAX BCC ?Rpe1 JSR ShowPe JMP ?EX.I}IT?Js LDA Stick0 CMP #13 BNE ?p14 LDA Strig0 BNE ?es1 LDA #246 BNE ?qs1?es1 LDA #255?qs1 JSR ModPe JMP ?pn?p14 C.J}MP #14 BNE ?p7 LDA Strig0 BNE ?es2 LDA #10 BNE ?qs2?es2 LDA #1?qs2 JSR ModPe JMP ?pn?p7 CMP #7 BNE ?p11 INC sk L.K}DA sk CMP #3 BNE ?dr1 LDA #0 STA sk?dr1 JSR Drawp1 JMP ?pn?p11 CMP #11 BNE ?pn DEC sk BPL ?dr2 LDA #2 STA sk?dr.L}2 JSR Drawp1?pn JMP ?OLOOP?EXIT LDA #0 STA p1x?WStrig0 LDA Strig0 BEQ ?WStrig0 JMP SelPer .LOCALdb=Sc+512;Dng mod.M}e only!-484 byte bufm320L .BYTE <0,<320,<640,<960,<1280 .BYTE <1600,<1920,<2240,<2560,<2880 .BYTE <3200,<3520,<3840,<4160.N},<4480 .BYTE <4800,<5120,<5440,<5760,<6080 .BYTE <6400,<6720m320H .BYTE >0,>320,>640,>960,>1280 .BYTE >1600,>1920,>2240,>.O}2560,>2880 .BYTE >3200,>3520,>3840,>4160,>4480 .BYTE >4800,>5120,>5440,>5760,>6080 .BYTE >6400,>6720DInd_L .BYTE <57344.P},.Q}57344,>up_,>dn_,>ud_ .BYTE >57376,>$80,>58112,>58016,>57760 .BYTE >57648,>57840,>alt_,>er_,>er_ .BYTE >sd_,>wa_APlot LS.R}R A LSR A LSR A LSR A TAY LDA DInd_L,Y STA ?from+1 LDA DInd_H,Y STA ?from+2 LDY IR5+1 CLC LDA IR5 ADC m320L,Y ST.S}A IR5 LDA #>scadr ADC m320H,Y STA IR5+1 LDA #0,>22,>44,>66,>88,>110,>132 .BYTE >154,>176,>198,>220,>242,>264 .BYTE >286,>308,>330,>352,>374,>396 .BYTE >418,>44.W}0,>462dr3 .BYTE $FF,0,1PPlot LDA #0 STA IR4;cnt LDY IR1+1;ay LDA IR1;ax CLC ADC m22L,Y STA IR0;q LDA #>db ADC M2.X}2H,Y STA IR0+1 LDY #0 LDA (IR0),y STA yy CMP #2 BNE ??NGOo JMP ?GOo??NGOo LDA #2 STA j??ylp LDA #2 STA i??xlp L.Y}DX i LDY j CPX #1 BNE ?NJ CPY #1 BNE ?NJ JMP ??Exlp?NJ CLC LDA IR1 ADC dr3,X CMP #22 BCC ??NExlp JMP ??Exlp??NE.Z}xlp STA IR2 LDA IR1+1 ADC dr3,Y CMP #22 BCS ??Exlp STA IR2+1 TAY LDA IR2 CLC ADC m22L,Y STA IR0 LDA #>db ADC m22H.[},Y STA IR0+1 LDA yy BNE ???Fii LDA IR2 STA IR5 CLC ADC IR3 AND #7 CLC ADC IR7 STA IR6 LDA IR7+1 ADC #0 STA IR6+.\}1 LDA IR2+1 STA IR5+1 CLC ADC IR3+1 AND #7 ASL A ASL A ASL A CLC ADC IR6 STA IR6 BCC ???c INC IR6+1???c LDY #0.]} LDA (IR0),Y BNE ??skp LDA (IR6),Y BEQ ??skp JSR APlot??skp LDY #0 LDA (IR6),Y CMP #240 BNE ???Fii LDA #2 STA (IR.^}0),Y???Fii LDA i EOR j AND #1 BEQ ??Exlp LDY #0 LDA (IR0),Y BNE ??Exlp INC IR4??Exlp DEC i BMI ??j JMP ??xlp??j ._}DEC j BMI ?GOo JMP ??ylp?GOo CLC LDY IR1+1 LDA IR1 ADC m22L,Y STA IR0 LDA #>db ADC m22H,Y STA IR0+1 LDA IR4 LDY .`}#0 CMP #2 BCC ?ELSE LDA #1 BNE ??out?ELSE LDA #2??out STA (IR0),Y LDA IR4 RTSdx .BYTE 0,$FF,1,0dy .BYTE $FF,0,0,.a}1DPeer LDA #0 TAY?CLdb STA db,Y STA db+256,Y INY BNE ?CLdb STA pc0 JSR ClDisplay LDA #0 STA IR7 LDA xx LSR A .b}ROR IR7 LSR A ROR IR7 CLC ADC #>Sc STA IR7+1 LDA #db ADC m.e}22H,Y STA IR6+1 LDY #0 LDA (IR6),Y BNE ?INX LDA IR2 STA IR1 LDA IR2+1 STA IR1+1 JMP LDPeer?INX INX CPX #4 BNE ??x.f}l??els LDA #db STA IR6+1 LDX #0?ol LDY #0?il LDA (IR6),Y CMP #1 BNE ??notend STY IR1 STX IR1+1.g} JMP LDPeer??notend INY CPY #22 BNE ?il CLC LDA IR6 ADC #22 STA IR6 BCC ?dINX INC IR6+1?dINX INX CPX #22 BNE ?ol.h}??OD CLC LDA #11 STA IR5 STA IR5+1 LDA #96 JSR APlot??kp LDA keyp CMP #255 BNE ??kpdn LDA Strig0 BNE ??kp??kpdn .i}JSR ClDisplay??s00 LDA Strig0 BEQ ??s00 LDA #255 STA keyp LDA #16 STA pc0 RTS .LOCAL LDA Strig0 BNE ??kp??kpdn ,_